如何在 HQL 中两个表之间的单侧关系上进行左连接



标题是明确的,所以这里是细节:我有两个表,A和B.B引用了A,但相反是不正确的。在SQL中,它并没有真正改变任何东西,但是在HQL中,我无法弄清楚该怎么做:

A 左连接 B 条件

我试过了:

A

左连接 B b 加入 b.A ba a.id = ba.id

-

-> 查询语法异常:联接的预期路径!

A 左连接 B B a.id = b.A.id

-

-> 查询语法异常:联接的预期路径!

我没有收到路径异常,因为我总是给出别名。我想我正在做一些没有意义的事情,或者很可能是因为我需要做 A A 左加入 a.B,但我不能......(我尝试了B b RIGHT JOIN b.A.它有效,但当然结果不是我需要的)

我也尝试了没有 WITH 子句,因为条件在 FK 上,但没有更多的成功。

如果你有任何想法,请,我在听!

谢谢。

首先,要执行这样的临时连接,您至少需要 Hibernate 5.1。JPA仍然不支持这种事情。

尝试使用此查询

class A {
  @Id
  private Long pid;
}
class B {
  @Id
  private Long pid;
  @OneToOne
  @JoinColumn
  private A refToA; 
}
from A a left join B b on a.pid = b.refToA.pid

最新更新