2

私は2つのリストを持っています。最初のリストには保存するデータが含まれ、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