我想将2个使用hibernate注释的实体与一个自定义连接子句关联起来。该子句具有通常的FK / PK相等性,但FK为null时也是如此。在SQL中,这类似于:
join b on a.id = b.a_id or b.a_id is null
从我阅读的内容中,我应该在所有者实体上使用@WhereJoinTable批注,但是我对如何指定此条件感到困惑……尤其是它的第一部分-指的是联接实体的ID。
有人有例子吗?
这是一个使用标准父/子范例的示例,我认为应该使用基本的@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; } }