JavaアプリでHibernateを使用しています。特定の情報 (および関連するすべての依存関係) を更新するために、Hibernate Merge 関数を使用しています。
HibernateTemplate template = getHibernateTemplate();
template.deleteAll(toBeDeletedObjs);
Object mergedObj = template.merge(obj);
更新されるメイン テーブルには 5 つの列があり、そのうちの 1 つ目 (PK) は自動生成された値です。
常にではありませんが、マージの挿入で次のエラーが発生することがあります。
[TABLE (COL1、COL2、COL3、COL4、COL5) 値に挿入 (デフォルト、?、?、?、?)
DuplicateKeyException: One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "ID" constrains table "TABLE" from having duplicate values for the index key.. SQLCODE=-803, SQLSTATE=23505, DRIVER=3.53.95
「デフォルト」は自動生成された Hibernate 値であると想定しているため、以前のオブジェクトの ID を取得していません。それがエラーの原因になることはありません。このマージで Hibernate が失敗することがある理由について何か考えはありますか?