【问题标题】:How to left join unrelated entities?如何离开加入不相关的实体?
【发布时间】:2014-09-15 13:14:58
【问题描述】:

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

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 hql querydsl


    【解决方案1】:

    Querydsl JPA 无法连接不相关的实体。 Querydsl JPA 内部使用 JPQL,继承了这个限制。

    【讨论】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      相关资源
      最近更新 更多