首页 > 解决方案 > 如何将 2 条记录(多对一)的 Result 对象映射到 jOOQ 中它们各自的记录对象中?

问题描述

我有一张桌子X和另一张桌子Y。我想加载一个X有外键的记录,Y所以我执行左连接:

X x = dslContext.select()
                .from(Tables.X)
                .leftJoin(Tables.Y)
                .on(Tables.X.SOME_ID.eq(Tables.Y.ID))
                .where(Tables.X.IS.eq(id))
                .fetchOptionalInto(XRecord.class)

这很好,但我对如何从中提取有点困惑Y?我尝试使用into,但问题是如果Y其中也存在列,当我尝试将结果X映射到. 我知道有,但我只有一个可以合作。XYintoYRecordfetchGroupsXRecord

标签: javajoinjooq

解决方案


您可以从通用记录类型映射您的记录,如下所示:

Record r = dslContext
                .select()
                .from(Tables.X)
                .leftJoin(Tables.Y)
                .on(Tables.X.SOME_ID.eq(Tables.Y.ID))
                .where(Tables.X.IS.eq(id))
                .fetchOne();

if (r != null) {
    XRecord x = r.into(Tables.X);
    YRecord y = r.into(Tables.Y);
}

推荐阅读