如何离开加入无关的实体?

时间:2014-09-15 13:14:58

标签: jpa hql querydsl

当我尝试运行这样的查询时:

QA A = QA.a;
QB B = QB.b;
...
from(A)
.leftJoin(B).with(B.name.eq(A.nameSomething));

(A和B实体无关) 我总是收到这个错误:

Caused by: org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!

我希望能够使用querydsl离开加入不相关的实体。 有可能吗? 或者唯一的方法是编写本机Oracle查询?

2 个答案:

答案 0 :(得分:5)

使用Querydsl JPA无法加入不相关的实体。 Querydsl JPA在内部使用JPQL并继承了这一限制。

答案 1 :(得分:1)

假设您指的是JPA标准。 innerJoin,leftOuterJoin用于加入关系,因为这是你在O-O系统中加入的唯一合乎逻辑的东西。

如果您要比较entity.fieldentity2.field的相等性(数据库中不存在FK且类中不存在关系),则在WHERE子句中执行此操作,就像任何过滤器一样

显然,QueryDSL有自己的语法/规则,所以如果引用那么这不是JPA