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

lor*_*rak 9 jpa hql querydsl

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

QA A = QA.a;
QB B = QB.b;
...
from(A)
.leftJoin(B).with(B.name.eq(A.nameSomething));
Run Code Online (Sandbox Code Playgroud)

(A和B实体不相关)我总是收到此错误:

Caused by: org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*per 5

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

  • 对,那是正确的.或者,您可以使用多个来源并在where部分中描述连接条件. (2认同)

小智 1

假设您指的是 JPA Criteria。innerJoin、leftOuterJoin 用于连接关系,因为这是在 OO 系统中连接的唯一逻辑事物。

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

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