这个问题是jOOQ: returning list with join,groupby and count in single object的扩展,但现在有三个对象而不是两个。
观
select A.*, B.*, C.*
from A
left join B on B.aId = A.aId
left join C on C.bId = B.bId
具体示例
SelectWhereStep<Record> query = using(configuration())
.select(Student.STUDENT.fields())
.select(Volunteermatch.VOLUNTEERMATCH.fields())
.select(Volunteer.VOLUNTEER.fields())
.from(Student.STUDENT)
.leftJoin(Volunteermatch.VOLUNTEERMATCH).on(Volunteermatch.VOLUNTEERMATCH.STUDENTID.eq(Student.STUDENT.STUDENTID))
.leftJoin(Volunteer.VOLUNTEER).on(Volunteer.VOLUNTEER.VOLUNTEERID.eq(Volunteermatch.VOLUNTEERMATCH.VOLUNTEERID));
如何从查询中获取结果?
答案 0 :(得分:0)
这不是查询!这只是Select的一步。您可以将此数据用于下一个查询,也可以将其提取到对象。它可以通过JOOQ模型列表或对象列表。
答案 1 :(得分:0)
查询末尾您错过了一个fetch()
通话。
答案 2 :(得分:0)
假设您可以使用类似“ Triple”类的东西(下面我使用Apache Commons类),并假设您只想要第一个结果:
import org.apache.commons.lang3.tuple.Triple;
Record r = query.fetchAny();
return Triple.of(r.into(VOLUNTEER), r.into(VOLUNTEERMATCH), r.into(STUDENT));
如果您想要多个结果,则可能类似于:
query.fetchStream().map(r-> Triple.of(
r.into(VOLUNTEER), r.into(VOLUNTEERMATCH), r.into(STUDENT) )
).collect(toList());