Jpa 如何左键连接不相关的实体?

Jpa 如何左键连接不相关的实体?,jpa,hql,querydsl,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左键连接不相关的实体。 有可能吗? 或者唯一的方法是编写一个本

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

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查询?

假设您引用的是JPA标准。 innerJoin、leftOuterJoin用于连接关系,因为这是在O-O系统中连接的唯一逻辑对象

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


显然QueryDSL有它自己的语法/规则,所以如果引用它,那么这不是JPA,使用QueryDSL JPA连接不相关的实体是不可能的。Querydsl JPA在内部使用JPQL,inherit的这一限制。

因此,要使实体可连接,Java模型和数据库中必须存在关系,对吗?如果是这样,这意味着如果我需要检查n:m联接表中的现有条目,我必须用Java对联接表的条目进行建模,并将这些对象与模型的“n”端相关联。对吗?对,没错。或者,您可以使用多个源,并在where零件中描述连接条件。