Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate合并函数偶尔会导致主键冲突_Java_Database_Hibernate_Merge_Indexing - Fatal编程技术网

Java Hibernate合并函数偶尔会导致主键冲突

Java Hibernate合并函数偶尔会导致主键冲突,java,database,hibernate,merge,indexing,Java,Database,Hibernate,Merge,Indexing,我们正在Java应用程序中使用Hibernate。要更新特定信息(及其所有相关依赖项),我们使用Hibernate合并功能: HibernateTemplate template = getHibernateTemplate(); template.deleteAll(toBeDeletedObjs); Object mergedObj = template.merge(obj); 正在更新的主表有5列,其中第一列(主键)是自动生成的值 偶尔,但并非总是,合并的插入会出现以下错误: [在表中插

我们正在Java应用程序中使用Hibernate。要更新特定信息(及其所有相关依赖项),我们使用Hibernate合并功能:

HibernateTemplate template = getHibernateTemplate();
template.deleteAll(toBeDeletedObjs);
Object mergedObj = template.merge(obj);
正在更新的主表有5列,其中第一列(主键)是自动生成的值

偶尔,但并非总是,合并的插入会出现以下错误:

[在表中插入(COL1、COL2、COL3、COL4、COL5)值(默认值、、、?、?)


我假设“默认值”是自动生成的Hibernate值,因此我没有检索上一个对象的ID;这不可能是错误的原因。有没有想过为什么Hibernate在这次合并中有时会失败?

您是否检查了Hibernate试图在DB上执行的语句?(打开show_sql参数)是的,我这样做了;这就是为什么我发现它是在INSERT INTO TABLE上发生的。虽然我没有看到插入的实际值。但是hibernate必须检查它以前是否已经存在,是否有一个Select sql来检查行是否存在?再进一步,您能粘贴hibernate从触发merge的那一刻起执行的sql吗红色
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