当前位置: 首页 > 知识库问答 >
问题:

jOOQ:从连接返回三个对象的列表

常雅珺
2023-03-14

这个问题是jOOQ的扩展:在单个对象中返回带有join、groupby和count的列表,但现在返回的是三个对象,而不是两个。

主意

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));

如何从查询中获取结果?

共有2个答案

尉迟明辉
2023-03-14

假设您有类似“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());

柴彬
2023-03-14

查询结束时缺少一个fetch()调用

 类似资料:
  • 核心问题:如何正确地将查询中的信息提取到对象中? 想法 我在我的DAO中创建函数,这归结为以下查询: 我正在寻找一种方法来创建一个jOOQ表达式,它只给我一个列表(或者一些我可以循环的东西),对象是A(pojo)和整数。 具体案例 在我的代码案例中:A=志愿者和B=志愿者匹配,我为每个志愿者存储几个匹配。B的主键是(自愿ID,自愿MatchId)。因此,这个查询会得到志愿者的信息以及匹配的数量。显

  • 我正在做jndi查找JBOSS AS. Code中配置的数据源,如下所示。 initialContext=新的initialContext(道具); dataSource=(dataSource)initialContext。查找(bundle.getString(“jndiName”); ource.get连接; 这段代码放在servlet的doPost中。我也很安全地打电话给你 联系关闭()

  • 我对Spring编程是新手。我正在用Reactor/Webflux项目测试反应式编程。 数据库注册通过POST工作得很好。 我的模型: 我的存储库 我的用户服务

  • 我使用mysql存储过程来检索对象列表。这可能吗? 我在看这篇文章 问题: > 如何使用结果集检索select语句中的对象列表? 如何将结果集映射到对象列表? CREATE DEFINER=@PROCEDURE(ININT,OUTINT,OUTINT,OUTVARCHAR(50),OUTVARCHAR(50),OUTFLOAT 内部连接(从rate中选择aid,r.rate,re.country_

  • 问题内容: 我正在尝试使用Flask和请求构建一个简单的代理。代码如下: 除丢失了Elasticsearch的状态代码外,此方法有效。我尝试直接返回(a ),但这失败了 还有另一种简单的从Flask返回a的方法吗? 问题答案: 好的,找到它: 如果返回一个元组,则该元组中的项目可以提供额外的信息。这样的元组必须采用格式(响应,状态,标题)。状态值将覆盖状态代码,并且标头可以是其他标头值的列表或字典

  • 我有以下记录是通过一个带有几个连接的查询得到的: 现在,当我尝试检索不在结果中的特定列时: 其中生成具有以下详细信息的静态编程语言代码: 我希望得到null。但是,返回了错误的id值(zkn_zaak.id)。 我错过了什么?jOOQ不应该有足够的信息(表和字段名)来从记录中检索正确的列吗? =======更新============= 从代码来看,这似乎是预期的行为,并且已经在例如。https: