JOOQ 记录映射器在加入时映射了错误的 ID

JOOQ record mapper maps the wrong id on join

我有两个表,asdf 和 qwer,两个表都有一个名为 "id" 的主键。当我连接这两个表时,结果将有两个名为 id 的列,而 JOOQ 无法将记录正确映射到 POJO。

sql.select(ASDF.fields())
.select(QWER.fields())
.from(ASDF)
.leftOuterJoin(QWER).onKey(QWER.ASDF_ID)
.where(ASDF.SOMETHING.eq(something))
.fetch(r -> tuple(r.into(Asdf.class), r.into(Qwer.class)))

现在每个 Asdf 实例都具有与其在元组中对应的 Qwer 实例相同的 ID。

是否有巧妙的别名技巧可以解决这个问题,或者我是否遗漏了 JOOQ 文档中的某些内容,或者这是 JOOQ 中的错误?

DefaultRecordMapper maps Record 列到 POJO 属性的列名。即使两个 ID 列在 Record 中可能有不同的 table 引用(ASDF.IDQWER.ID),也没有这样的 table POJO 中可用的信息。

一种解决方法是先将 r 映射到相应的 TableRecord,使用 Record.into(Table):

r -> tuple(
    r.into(ASDF).into(Asdf.class), 
    r.into(QWER).into(Qwer.class)
)