sql - 如何从数据库中获取两种不同的记录类型?

标签 sql jooq

我有两个具有 FK 关系的表。我想要的相当于:

select A.*, B.*
from A
join B
    on B.A_ID = A.ID

我如何在 jOOQ 中有效地做到这一点?最后,我需要一个 ARecord 的实例和 BRecord 之一每个结果行。

最佳答案

像这样

Result<Record> result =
create.select()
      .from(A)
      .join(B).on(B.A_ID.equal(A.ID))
      .fetch();

这将获取 A.*, B.* (或更准确地说, A.A1, A.A2, ..., A.AN, B.B1, ... )。现在为了改造result进入 ARecordBRecord使用 Result.into(Table) 方法:
ARecord a = result.into(A);
BRecord b = result.into(B);

请注意,这有已知的缺陷。例如,如果 A.X是具有对应字段 B.X 的字段(相同的字段名称),A.X将举行B.X的值(value)。我已经为此注册了一个错误报告:#1802

关于sql - 如何从数据库中获取两种不同的记录类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12300459/

相关文章:

java - 在 SQL 语句中调用具有默认值的函数

sql - 从侧面 View 转换为Hive中的案例陈述

python - 选择订阅特定用户但该用户未订阅的所有用户

sql - 查找日期范围包含给定日期的记录?

java - 在 JOOQ 中,如果我直接使用底层连接,我的事务状态是否保持?

java - 批量插入onDuplcateKey忽略JOOQ

sql - 在分组结果集上执行 count(*)

sql - 是否可以在 Rails 迁移中使用外部 SQL 文件?

gradle - 在jOOQ中使用SSH隧道

java - Jooq 的 addOrderBy() 方法有什么问题?