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