我有两个清单。第一个列表包含要保存的数据,第二个列表包含要删除的数据。我需要执行批量删除,而不是需要在单个事务中保存批量插入。以下是我用来执行这些操作的代码:
public void bulkSaveDeleteOperation(final List<Person> personList,
final List<Person> duplicatePersonList) {
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
session.beginTransaction();
try {
//delete operation
if (duplicatePersonList != null) {
Integer deleteCounter = 0;
for (Person cp : duplicatePersonList) {
session.delete(cp);
deleteCounter++;
if (deleteCounter % 20 == 0) {
session.flush();
session.clear();
}
}
}
//save operation
if (personList != null) {
Integer saveCounter = 0;
for (Person cp : personList) {
session.saveOrUpdate(cp);
saveCounter++;
if (saveCounter % 20 == 0) {
session.flush();
session.clear();
}
}
}
session.getTransaction().commit();
} catch (Exception e) {
}
}
现在的问题是,要保存的列表中的数据(即(personList))在最终提交中成功插入到数据库中,但要删除的列表中的数据(即(duplicatePersonList))不会被删除。删除和插入操作都命中数据库中的同一个表。所以,这里有什么问题,我不知道。