2010-05-10 22 views
6

我想將2個使用hibernate註釋的實體與自定義連接子句關聯起來。該條款是關於通常的FK/PK平等,但也是FK爲空的地方。在SQL這將是這樣的:關聯中的Hibernate自定義連接子句

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

從我讀,我應該使用的所有者實體@WhereJoinTable註釋,但我不解,我怎麼指定這個條件......尤其是第一部分它 - 指的是加入實體的ID。

有沒有人有一個例子?

+0

如果b.a_id爲null,那麼它屬於每個對象是一個? – 2010-05-10 18:29:20

+0

是'a'的所有對象都有'b',其中b.a_id爲空 – mysomic 2010-05-10 18:30:41

回答

18

下面是一個使用標準父/子範例的例子,我認爲它應該使用基本的@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; } 
} 
+0

EclipseLink是否有類似的解決方案? – Huntro 2017-10-12 08:52:57

+0

不,但您可以使用DescriptorCustomizer http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria – 2017-10-13 12:15:00

相關問題