Проблема, с которой я часто сталкиваюсь с Hibernate, имеет список (вызывайте его listA) объектов, которые я хочу сохранить для объекта (myEntity), но сначала должен сравнить их с существующим списком на сущности и удалить те, которые не входят в список.
Простой способ сделать это - очистить список в Entity и просто добавить весь списокA в объект, однако мне часто приходится выполнять некоторую проверку элементов перед их удалением - например. чтобы проверить, разрешено ли этому пользователю удалять их.
Мой текущий подход неловко:
//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);
}
}
Есть ли возможность для улучшения?
Спасибо.