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

时间:2012-09-06 12:46:13

标签: sql jooq

我有两张表与FK关系。我想要的相当于:

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

如何在jOOQ中有效地执行此操作?最后,每个结果行需要一个ARecordBRecord个实例。

1 个答案:

答案 0 :(得分:1)

喜欢这个

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的值。我已为此注册了错误报告:#1802