我經常遇到的一個問題是,Hibernate有一個對象的列表(稱爲listA),我想堅持一個實體(myEntity),但必須首先將它們與實體上的現有列表並刪除那些不在listA中的列表。休眠:刪除集合中元素的最佳方法
執行此操作的簡單方法是清除實體上的列表,然後將所有listA添加到實體中,但是我經常必須在刪除元素之前執行一些驗證操作 - 例如,檢查這個用戶是否被允許刪除它們。
我目前的做法感到尷尬:
//Delete the elements that have been removed
//Use toArray to avoid ConcurrentModificationException
for(ObjectA a : myEntity.getObjectAList().toArray(new ObjectA[myEntity.getObjectAList().size()])) {
if(!listA.contains(a)) {
//Check if this element can be deleted
if(canDelete(a)) {
entityManager.remove(a);
myEntity.getObjectAList().remove(a);
}
}
}
//Add the elements that don't already exist
for(ObjectA a : listA) {
if(!myEntity.getObjectAList().contains(a)) {
myEntity.getObjectAList().add(a);
}
}
任何改進的餘地?
謝謝。
我不能使用removeAll(),因爲我需要執行一些單獨的元素驗證之前刪除它們。 儘管感謝Iterator提示。 – Damo 2009-04-16 15:20:33