我在我的数据库中有一个小特例,我需要从两个不同的表中获取数据,这些表具有一对一的关系,以便获得有用的结果。 fetch看起来像这样:
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完成这样的事情的最佳方法是什么?
答案 0 :(得分:1)
您可以在不需要适配器或转换器的情况下获取(未生成的)POJO。有关示例,请参阅jOOQ
在线文档中的this page。
jOOQ
会根据名称将查询中的列映射到POJO字段。名称不必与列名完全匹配; DefaultRecordMapper
个文档some examples显示了如何忽略下划线和大小写。
在您的情况下,您专门创建POJO以获取这些结果。因此,您可以将POJO字段命名为与查询列相同。但是如果名称必须不同,您可以使用JPA注释告诉jOOQ
哪个列放在每个字段中:
@Column(name = "TITLE")
public String myTitle;
(如果仍然不够好,至少有两种方法可以做到:你可以使用构造函数,或者将结果提取到HashMap中。)