我在使用Hibernate时经常遇到的问题是有一个对象列表(称为listA)需要持久化到实体(myEntity),但需要先将它们与实体上现有的列表进行比较,并删除那些不在listA中的对象。
简单的方法是清除实体上的列表,然后将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);
}
}
有哪些可以改进的地方呢?
谢谢。