2015-01-09 58 views
6

我搜索了答案,但我無法正確理解。 CascadeType.ALL,cascade = CascadeType.REMOVE,orphanRemoval什麼時候我們設置FetchType.EAGER@OneToMany關係? 一旦我在刪除記錄時遇到問題。我已經使用以下CascadeType.ALL,cascade = CascadeType.REMOVE和orphanRemoval之間的區別

@OneToMany(cascade = CascadeType.ALL, mappedBy = "companyEntity", fetch = FetchType.EAGER) 
Set<EmployeeEntity> employeeEntities; 

當我試圖刪除員工記錄,它不顯示我的任何異常,它不記錄delete一個。但是當我將CascadeType.ALL更改爲CascadeType.REMOVE時,它正在工作。 爲什麼它不適用於CascadeType.ALL而不是CascadeType.REMOVE

感謝您簡單的解釋提前;)

回答

2

This解釋你的問題的一部分。

「OrphanRemoval =真」 Vs的「CascadeType.REMOVE」

兩個設置之間的差是在響應於去除 子從由父實體指向的對象集合。

如果指定orphanRemoval = true,則會自動刪除已刪除的地址實例 。如果僅指定CascadeType CascadeType.REMOVE ,則不會執行自動操作,因爲刪除關係不是 刪除操作。

相關問題