2012-11-15 61 views
1

有沒有辦法做這樣的事情JPA抓取連接時,屬性僅在某些子類

select a from A a join fetch a.b 

a.b只存在爲A一些子類?

在那裏我有

@Entity 
class A { 
} 

@Entity 
class SubA extends A { 
    @OneToMany 
    List<B> b; 
} 

換句話說,我想取回加入@OneToMany收集a.b只有a instanceof SubA是真實的。

這可能嗎?或者是否有更好的方法來避免集合中的n-plus-one選擇問題?我真正想要阻止對集合中的每個B執行一次往返 - 取指連接似乎對此非常有效。

我使用的是EclipseLink,但只要有可能就更喜歡JPA標準。

回答

0

'更好的方式'(與Eclipselink,無論如何)看起來像使用批量提取,或者通過註釋@OneToMany@BatchFetch或添加查詢提示。