2016-08-19 45 views
0

是否有可能基於狀態列以某種方式定義關係?基於狀態列的JPA加入?

Table A: id, valueA 
Table B: id, refIdA, valueB, status 

所以在A類中,我只想獲取狀態處於活動狀態的B。拿起em.find(id, A.class)。有沒有辦法在實體內定義它?

@Entity 
public class A { 
    ... 
    @OneToMany 
    @JoinColumn(name = "refIdA") 
    private List<B> b; 
    ... 
} 
+0

你不能這樣做與JPA。你總是加入FK。回落到執行特價失去可移植性 –

回答

0

對於Eclipse Link,一個解決方案是使用@AdditionalCriteria。但是,此註釋不適用於會員。但對於我的用例來說沒問題。因此,註釋B過濾所有BStatus.ACTIVE

@Entity 
@AdditonalCriteria("this.status = com.example.Status.ACTIVE") 
public class B { 
    ... 
} 

感謝Peter L

0

嘗試@Where。網站上有很多關於如何使用它的例子,例如:How to use @Where in JPA Hibernate

+0

謝謝,這導致我進入正確的方向。 '@ Where'在EclipseLink中不可用,但可以通過@ @ AdditionalCriteria'來實現 –