gpt4 book ai didi

jakarta-ee - 如何使用JPA标准api左连接两个不相关的实体?

转载 作者:行者123 更新时间:2023-12-04 01:37:27 24 4
gpt4 key购买 nike

使用 JPA 2.1 和 hibernate 5.1.x,这可以使用 JPQL

select s.lowerBound,
l.status
...
from Serie s
left join Line l on
s.lowerBound between l.lineStart and l.lineEnd

我如何使用 Criteria api 编写这个?
我试过这个
Root<Serie> serieRoot = query.from(Serie.class);
Root<Line> lineRoot query.from(Line.class);
query.where(criteriaBuilder.between(s.get("lowerBound"), l.get("lineStart"), s.get("lineEnd")))

但这不允许我指定它是左连接。

最佳答案

您对 Criteria 查询所做的操作不允许您将其指定为左连接,因为它并不是真正的左连接。您的查询中有多个根,并且根据 Hibernate documentation使用笛卡尔积,但是使用左连接,如果没有匹配项,您会在右侧获得空值。

Form interface只允许您从实体的属性创建连接,我认为您想要实现的目标对于 Criteria API 是不可行的。您要么必须对数据库执行两次查询,要么必须使用 JPQL 或 SQL 在一次查询中执行此操作。

关于jakarta-ee - 如何使用JPA标准api左连接两个不相关的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41838347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com