2

我有两个清单。第一个列表包含要保存的数据,第二个列表包含要删除的数据。我需要执行批量删除,而不是需要在单个事务中保存批量插入。以下是我用来执行这些操作的代码:

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))不会被删除。删除和插入操作都命中数据库中的同一个表。所以,这里有什么问题,我不知道。

4

0 回答 0