2014-06-06 25 views
0

我不認爲存在以下情況,但認爲這值得問。從數據庫中刪除獨立的實體

說我有一個具有以下屬性的實體Contact

@OneToMany(cascade = {CascadeType.ALL}) 
private List<Address> addresses; 

假設一個Address是獨一無二的,因此可以不屬於任何其他Contact。顯然,我可以使用級聯,以便在Contact上執行的操作級聯到Address,但是如果從List<Address> addresses中刪除,則會從DB中刪除Address註釋。

EG。 A ContactList<Address> addresses property contains 3 Address values; Address#1,Address#2Address#3

Address#3被刪除,Contact被合併回使用實體管理器的數據庫。此時Address#3仍然存在於數據庫中,但不再與任何關聯。我總是手動處理這個問題,但它讓我覺得它是一個相對常見的事件(至少對我來說),並且可能會有一個註釋來解決這個問題。

+0

你正在尋找[孤兒消除](http://nsinfra.blogspot.de/2013/03/jpa-20-hibernate-orphanremoval-true.html)? – John

回答

1

嘗試orphan removal option

@OneToMany(cascade = {CascadeType.ALL}, , orphanRemoval="true") 
private List<Address> addresses; 

這將導致當您從列表中移除它們的地址被刪除。

+0

正是我在找的東西。謝謝。 – tarka