如何在HQL中的两个表之间的单侧关系上进行LEFT JOIN?

时间:2016-07-08 08:52:15

标签: sql hibernate join left-join hql

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

  

LEFT JOIN B 开启 条件

我试过了:

  

a LEFT JOIN B b 加入 b.A ba WITH a.id = ba.id

- > QuerySyntaxException:连接所需的路径!

  

a LEFT JOIN B b WITH a.id = b.A.id

- > QuerySyntaxException:连接所需的路径!

我没有得到路径异常,因为我总是给别名。我想我做的事情没有意义,或者很可能是因为我需要做 A LEFT JOIN aB ,但我不能...... (我试过 B b RIGHT JOIN bA 。它有效但当然结果不是我需要的)

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

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

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,要进行此类临时连接,至少需要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