Jooq record.into(Pojo.class) 具有相同的字段名称问题

Jooq record.into(Pojo.class) with same fields name problem

我有代码从 2 tables 中检索 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);

table ISSUE 和 table CLIENT 都有 PK 字段 "ID"。

问题是映射到 (POJO.class) 时,table 具有相同名称的字段未正确映射到 POJO。 在上面的示例中 jIssue 获取 jClient.

的 id

当使用 TableRecords 而不是 POJO 的所有映射都正确完成时,但您不能在生成的 DAO 中使用 TableRecord,它需要生成的 POJO。

我怎样才能解决这个问题,以便 jooq 可以正确映射到生成的 pojo 字段?

POJO 类 没有任何可靠的元信息来明确区分源记录中两个同名列之间的歧义。但是,您可以将加入的记录复制到每个 table 的 TableRecord 中,然后将该记录再次复制到您的 POJO 中:

JIssue jIssue = record.into(ISSUE).into(JIssue.class);
JClientRecord jClient = record.into(CLIENT).into(JClientRecord.class);