【发布时间】:2021-06-25 18:32:25
【问题描述】:
我有一个应用程序正在从 jooq 切换到 jdbc,我使用 jdbc 创建了一个表,但我需要编辑一些 jooq 查询来加入它,问题是自动生成的 jooq 表类无法识别它,那么有没有办法通过字符串名称来引用表格?
这里是一些示例代码:
private final Business BUSINESS = Tables.BUSINESS; // table that jooq auto generated in jar file
....
Map<BusinessRecord, List<BusinessAddressRecord>> resultMap = dslContext
.select()
.from(BUSINESS.leftOuterJoin(BUSINESS_ADDRESS).on(BUSINESS.ID.eq(BUSINESS_ADDRESS.BUSINESS_ID)))
.where(BUSINESS.ID.equal(id))
.and(BUSINESS_ADDRESS.DEACTIVATED_AT.isNull())
.fetchGroups(
a -> a.into(BUSINESS),
b -> b.into(BUSINESS_ADDRESS)
);
如何在此处加入“连接”表?没有 Tables.CONNECTION,因为它是以不同的方式创建的。
有很多查询,所以我们希望根据需要逐步进行切换。
更新: 我尝试添加以下内容,查询运行,但我试图获取的字段始终为空,我猜是因为 BusinessRecord 表没有与 DTO 相同的字段,那么如何解决?
Map<BusinessRecord, List<BusinessAddressRecord>> resultMap = dslContext
.select()
.from(BUSINESS)
.leftOuterJoin(BUSINESS_ADDRESS)
.on(BUSINESS.ID.eq(BUSINESS_ADDRESS.BUSINESS_ID))
.join("connection")
.on("CAST(connection.business_id as bigint) = business.id")
.where(BUSINESS.ID.equal(id))
.and(BUSINESS_ADDRESS.DEACTIVATED_AT.isNull())
.fetchGroups(
a -> a.into(BUSINESS),
b -> b.into(BUSINESS_ADDRESS)
);
【问题讨论】:
-
嗨,我是 jooq 的新手,所以也许我误解了你链接的那个问题,但它是关于获取表模式,答案也说这样做,它没有解释如何我可以将字符串加入到普通查询中。
-
“自动生成的 jooq 表类无法识别”是什么意思
-
为什么要切换到 JDBC?
-
jooq 从模式构建表,这就是查询中使用的。