我有两张一对多关系的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中表达。
暂无答案!
目前还没有任何答案,快来回答吧!