假设我有 3 个相关的表。如何查询所有 3 个内部连接并为每个表获取 3 种不同记录类型的结果?
例如像这样的东西:
dslContext
.select(A.fields()).from(B).innerJoin(A).on(...)
.fetchInto(A,B) ???
不能这样做,因为类之间的字段划分不明确(数据库中的列顺序可能未定义)。
也很难理解这个构造的返回类型是什么
但是你可以使用
fetch(RecordMapper<? super R,E> mapper)
https://www.jooq.org/javadoc/latest/org.jooq/org/jooq/ResultQuery.html#fetch(org.jooq.RecordMapper)
将
Record
映射到 Map.Entry
类型(或任何其他自定义 Pair
类型),以提取到一对 A 类和 B 类中。
假设您想要类似
Record3<ARecord, BRecord, CRecord>
的东西,您可以简单地嵌套投影记录:
Result<Record3<ARecord, BRecord, CRecord>> result =
ctx.select(A, B, C) // Project the tables directly, not their fields
.from(A)
.join(B).on(...)
.join(C).on(...)
.fetch();