【问题标题】:How to fetch joined table results in jOOQ?如何在 jOOQ 中获取连接表结果?
【发布时间】:2016-04-13 04:44:32
【问题描述】:

我的数据库中有一个小特殊情况,我需要从两个具有一对一关系的不同表中获取数据,以获得有用的结果。提取看起来像这样:

SELECT 
  time_period.from_day, time_period.to_day, store_time_period.valid_for_days 
FROM time_period, store_time_period 
WHERE 
  -- .. condition

当然,我在实际代码中使用JOIN - 这只是一个示例。我的问题是是否以及如何将 jOOQ 中获取的数据写入 POJO。我不确定是否有办法让 jOOQ 为我生成这个 POJO,但如果我必须自己编写它,我假设我需要像适配器这样的东西以及像 org.jooq.Converter 这样的东西作为数据类型的转换器。

我看到有RecordMapperProvider 的可能性,但这似乎只处理单个已知的表。

那么,用 jOOQ 完成这样的事情的最佳方法是什么?

【问题讨论】:

    标签: sql jooq


    【解决方案1】:

    您可以在不需要适配器或转换器的情况下获取(非生成的)POJO。有关示例,请参见 jOOQ 在线文档中的 this page

    jOOQ 将根据名称将查询中的列映射到 POJO 字段。名称不必与列名完全匹配; DefaultRecordMapper 文档有 some examples 显示如何忽略下划线和大写。

    在您的情况下,您正在专门创建 POJO 来获取这些结果。因此,您可以将 POJO 字段命名为与查询列相同的名称。但如果名称必须不同,您可以使用 JPA 注释告诉 jOOQ 将哪个列放在每个字段中:

    @Column(name = "TITLE")
    public String myTitle;
    

    (如果这还不够好,至少还有两种其他方法可以做到这一点:您可以使用构造函数,或者将结果获取到 HashMap 中。)

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 2020-09-30
      • 2019-09-15
      • 2022-01-25
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      相关资源
      最近更新 更多