Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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_Oracle_Hibernate_Jpa_Orm - Fatal编程技术网

Java 如何在批量更新期间使Hibernate重用或重新创建临时表

Java 如何在批量更新期间使Hibernate重用或重新创建临时表,java,oracle,hibernate,jpa,orm,Java,Oracle,Hibernate,Jpa,Orm,Hibernate通过自动创建临时表来存储已更新或已删除记录的ID,从而处理由联接继承策略联接的表上的更新和删除操作(这里有一篇关于这方面的优秀博文:) 在一个事务中,Hibernate创建一个临时表(名为HT_mytable),插入记录ID,用存储的ID从mytable中删除条目,并清除HT_mytable 但是,在我的例子中,它尝试在每次更新时创建表,而不首先检查表是否存在,方法是执行: Hibernate: create global temporary table HT_child (r

Hibernate通过自动创建临时表来存储已更新或已删除记录的ID,从而处理由联接继承策略联接的表上的更新和删除操作(这里有一篇关于这方面的优秀博文:)

在一个事务中,Hibernate创建一个临时表(名为HT_mytable),插入记录ID,用存储的ID从mytable中删除条目,并清除HT_mytable

但是,在我的例子中,它尝试在每次更新时创建表,而不首先检查表是否存在,方法是执行:

Hibernate: create global temporary table HT_child (record_id number(10,0) not null) on commit delete rows Hibernate:创建全局临时表HT_子级(记录id号(10,0)不为空) 在提交时删除行 所以Oracle抛出了一个异常:

ERROR spi.SqlExceptionHelper - ORA-00955: name is already used by an existing object 错误spi.SqlExceptionHelper-ORA-00955:名称已被现有对象使用
如果表已经存在,如何告诉Hibernate不要创建它?

据我所知,您不能。但是,您可以自己删除该表作为解决方法,或者创建一个自定义批量更新策略,以您希望的方式实现它