2015-09-03 16 views
0

我有這2個實體,當我檢索People實體時,Set僅包含沒有deletedDates的人員,JPA對此有任何詮釋?在現在,我使用JPA API從DB避免使用「刪除日期」檢索項目

檢索數據

@Entity 
@Table(name = "person") 
public class Person { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private String name; 

    private Date deleteDate; 

    @ManyToOne 
    private People people; 

    //Getters and setters 
} 

人民

@Entity 
@Table(name = "people") 
public class People { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private String from; 

    @OrderBy("id") 
    @OneToMany(mappedBy = "people", fetch = FetchType.EAGER) 
    private Set<Person> persons = new HashSet<Person>(); 
} 
+1

我不確定JPA是否有辦法處理這個問題(至少我沒有意識到),但是它的實現(至少是最流行的)是這樣做的。你使用的是什麼實現,Hibernate,EclipseLink ......? –

+0

@PredragMaric休眠和我修復Person類名稱,對不起! – Kratul

+0

JPA不支持對象的「邏輯刪除」,因此,正如Predrag所說,您只需要具體實現。 –

回答

1

與Hibernate,一個辦法就是把@Where註解放在集的人

@OrderBy("id") 
@Where(clause = "delete_date is null") 
@OneToMany(mappedBy = "people", fetch = FetchType.EAGER) 
private Set<Person> persons = new HashSet<Person>();