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.ID
与 QWER.ID
),也没有这样的 table POJO 中可用的信息。
一种解决方法是先将 r
映射到相应的 TableRecord
,使用 Record.into(Table)
:
r -> tuple(
r.into(ASDF).into(Asdf.class),
r.into(QWER).into(Qwer.class)
)
我有两个表,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.ID
与 QWER.ID
),也没有这样的 table POJO 中可用的信息。
一种解决方法是先将 r
映射到相应的 TableRecord
,使用 Record.into(Table)
:
r -> tuple(
r.into(ASDF).into(Asdf.class),
r.into(QWER).into(Qwer.class)
)