我有代码从 2 个表中检索 2 个对象的一条记录(由 JooQ 生成的 POJO(。
Record record = dsl.select()
.from(ISSUE)
.leftJoin(CLIENT).on(CLIENT.ID.eq(ISSUE.CLIENT_ID))
.where(ISSUE.ID.eq(id))
.fetchOne();
JIssue jIssue = record.into(JIssue.class);
JClientRecord jClient = record.into(JClientRecord.class);
表 ISSUE 和 Table CLIENT 都有 PK 字段"ID"。
问题是在映射到 (POJO.class( 时,具有相同名称的表字段未正确映射到 POJO。 在上面的例子中,jIssue 获取 jClient 的 id。
当使用TableRecords而不是POJO的所有映射正确完成时,但你不能在生成的DAO中使用TableRecord,它需要生成的POJO。
如何解决此问题,以便 jooq 可以正确映射到生成的 pojo 字段?
POJO 类没有任何可靠的元信息来清楚地消除源记录中两个同名列之间的歧义。但是,您可以将联接记录复制到每个表的TableRecord
中,然后将该记录再次复制到 POJO 中:
JIssue jIssue = record.into(ISSUE).into(JIssue.class);
JClientRecord jClient = record.into(CLIENT).into(JClientRecord.class);