当前位置: 首页 > 知识库问答 >
问题:

如何在jOOQ中获取连接表结果?

孟财
2023-03-14

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

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完成类似任务的最佳方式是什么?

共有1个答案

满和安
2023-03-14

您无需适配器或转换器即可获取(未生成的)POJO。有关示例,请参阅jOOQ在线留档中的此页面。

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

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

(如果这还不够好,至少还有两种方法可以做到:使用构造函数,或者将结果提取到哈希映射中。)

 类似资料:
  • 我知道,要获取地图,我可以使用fetchMap,但它不支持LinkedHashMap,我想保持由orderBy创建的插入顺序。 我试过了 但是字段1和字段2部分给了我以下错误。 无法解析“T”中的方法“field1” 希望有人能帮我~ 谢谢 解决方案: 基于@Lukas的回答,我尝试了几次,发现必须做到以下几点: > 在方法中,所有字段都必须有一个类型,除了那些计算的,其中添加类型会抛出在字段列表

  • 我有课程,学生,时间表表。 现在,我想将时间表表与课程表和学生表左连接。 在jooq中连接这3个表的最佳方法是什么?我假设它是这样的: 当我得到结果时,将结果分为学生对象和课程对象的最佳方式是什么?我的意思是,既然类型是Result?,我们有什么方法可以将结果映射到学生、课程实体中,而不是繁琐地做这样的事情:

  • 我有一张siswa和kelas的联合表格。在kelas表中有一列idSiswa,它来自siswa表的id。问题是当kelas加入时,我如何从他那里获得id。当我尝试获取id时,它显示了来自siswa表的id,而不是来自kelas表的id,我也已经使用了右连接和左连接,但仍然没有得到答案 我使用来自laravel的查询生成器来运行查询,这是我的查询

  • 我有三张桌子: 用户键表具有来自用户和键表的主键,以建立用户和键之间的关系。 如何使用所有相关键获取用户? 如果存在其他表(例如,UserRoles)等,该怎么办?通常,如何获取用户和所有通过外键表相关的相关行?

  • 在java reactor中,r2dbc。我有两个表A和B。我还为它们定义了存储库。如何获取由连接B组成的数据? 我只提出了以下方法:调用databaseClient。从A中选择,然后在循环调用中从B中选择。 但我想要更有效、更被动的方式。怎么做?

  • 问题内容: 找不到解决方案来执行以下操作: 如何在PostgreSQL中做到这一点? 问题答案: 快速而肮脏: 是表的别名,并非严格需要。您也可以使用原始表名。但是,如果您具有相同名称的列,则该列具有优先权。 因此,代表表的行类型,该行类型将自动强制为输出的文本表示形式。 我还添加了一个显式的强制转换, 使其 在内部也可以使用-如果您想对其进行任何处理,… 是SQL标准的Postgres缩写,您也