当我尝试运行这样的查询时:
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查询?
答案 0 :(得分:5)
使用Querydsl JPA无法加入不相关的实体。 Querydsl JPA在内部使用JPQL并继承了这一限制。
答案 1 :(得分:1)
假设您指的是JPA标准。 innerJoin,leftOuterJoin用于加入关系,因为这是你在O-O系统中加入的唯一合乎逻辑的东西。
如果您要比较entity.field
与entity2.field
的相等性(数据库中不存在FK且类中不存在关系),则在WHERE子句中执行此操作,就像任何过滤器一样
显然,QueryDSL有自己的语法/规则,所以如果引用那么这不是JPA