一尘不染

关联的Hibernate自定义连接子句

hibernate

我想将2个使用hibernate注释的实体与一个自定义连接子句关联起来。该子句具有通常的FK / PK相等性,但FK为null时也是如此。在SQL中,这类似于:

join b on a.id = b.a_id or b.a_id is null

从我阅读的内容中,我应该在所有者实体上使用@WhereJoinTable批注,但是我对如何指定此条件感到困惑……尤其是它的第一部分-指的是联接实体的ID。

有人有例子吗?


阅读 189

收藏
2020-06-20

共1个答案

一尘不染

这是一个使用标准父/子范例的示例,我认为应该使用基本的@Where注释来工作。

public class A {
  ...
  @ManyToOne(fetch = FetchType.EAGER) // EAGER forces outer join
  @JoinColumn(name = "a_id")
  @Where(clause = "a_id = id or a_id is null") // "id" is A's PK... modify as needed
  public B getB() { return b; }

}

public class B {
  ...
  @OneToMany(mappedBy = "b")
  public List<A> getA() { return a; }
}
2020-06-20