jooq将记录从原始sqlMap到pojo

dl5txlt9  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(169)

我有两张一对多关系的table row 以及 columns ,其中一行可以有许多列。
使用jooq(3.12.3),我可以执行以下查询:

Map<JooqRowPojo, List<JooqColumnPojo>> join = dslContext.select()
    .from(ROW).join(COLUMN).onKey(Keys.COLUMN__ROW_ID__FK)
    .fetchAsync().thenApply(r -> {
      return r.intoGroups(r1 -> r1.into(ROW).into(JooqRowPojo.class),
          r1 -> r1.into(COLUMN).into(JooqColumnPojo.class));
    }).toCompletableFuture().join();

这将返回预期Map到pojo的行。
但是,如果我尝试使用原始sql执行上述操作:

dslContext.fetch("SELECT * FROM row JOIN column ON row.row_id = column.row_id")
  .intoGroups(r1 -> r1.into(ROW).into(JooqRowPojo.class),
              r1 -> r1.into(COLUMN).into(JooqColumnPojo.class))

我得到的是一堆pojo示例,其中所有值都是 null 而不是表中的值。我不知道为什么我不能从原始sqlMap记录?
n、 b.这是一个我观察到的行为的简化示例,在实践中,我需要运行一个复杂的查询,它不能在jooqapi/dsl中表达。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题