我想將2個使用hibernate註釋的實體與自定義連接子句關聯起來。該條款是關於通常的FK/PK平等,但也是FK爲空的地方。在SQL這將是這樣的:關聯中的Hibernate自定義連接子句
join b on a.id = b.a_id or b.a_id is null
從我讀,我應該使用的所有者實體@WhereJoinTable註釋,但我不解,我怎麼指定這個條件......尤其是第一部分它 - 指的是加入實體的ID。
有沒有人有一個例子?
我想將2個使用hibernate註釋的實體與自定義連接子句關聯起來。該條款是關於通常的FK/PK平等,但也是FK爲空的地方。在SQL這將是這樣的:關聯中的Hibernate自定義連接子句
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; }
}
EclipseLink是否有類似的解決方案? – Huntro 2017-10-12 08:52:57
不,但您可以使用DescriptorCustomizer http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria – 2017-10-13 12:15:00
如果b.a_id爲null,那麼它屬於每個對象是一個? – 2010-05-10 18:29:20
是'a'的所有對象都有'b',其中b.a_id爲空 – mysomic 2010-05-10 18:30:41