我们在Java应用程序中使用Hibernate。要更新某条信息(及其所有相关的依赖项),我们正在使用Hibernate Merge函数:
HibernateTemplate template = getHibernateTemplate();
template.deleteAll(toBeDeletedObjs);
Object mergedObj = template.merge(obj);
正在更新的主表有5列,第一列(PK)是自动生成的值。
有时候,但并非总是,合并的Insert会出现以下错误:
[插入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有时会在这次合并中失败的任何想法?