如何获取多个类?

问题描述 投票:0回答:2

假设我有 3 个相关的表。如何查询所有 3 个内部连接并为每个表获取 3 种不同记录类型的结果?

例如像这样的东西:

dslContext
.select(A.fields()).from(B).innerJoin(A).on(...)
.fetchInto(A,B) ???
java jdbc jooq
2个回答
0
投票

不能这样做,因为类之间的字段划分不明确(数据库中的列顺序可能未定义)。

也很难理解这个构造的返回类型是什么

但是你可以使用

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 类中。


0
投票

假设您想要类似

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();
© www.soinside.com 2019 - 2024. All rights reserved.