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

标签 java oracle hibernate jpa orm

Hibernate 通过自动创建用于存储更新或删除记录的 ID 的临时表来处理由 JOINED 继承策略连接的表的更新和删除操作(关于此的优秀博客文章:http://in.relation.to/Bloggers/MultitableBulkOperations)。

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

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

Hibernate: create global temporary table HT_child (record_id number(10,0) not null) 
on commit delete rows

因此 Oracle 抛出异常:

ERROR spi.SqlExceptionHelper - ORA-00955: name is already used by an existing object

如果表已经存在,如何告诉 Hibernate 不要创建表?

最佳答案

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

关于java - 如何在批量更新期间使 Hibernate 重用或重新创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047242/

相关文章:

sql - Oracle中创建临时表

oracle - 错误(26,14): PLS-00103: Encountered the symbol <cursor> when expecting one of the following: := .(@%;

java - Netbeans 7.1 Hibernate 逆向工程向导找不到数据库驱动程序

java - Spring登录显示用户信息

java - Hibernate + Lucene - 通配符搜索返回空结果

使用 RMI 的 Java 客户端服务器

java - 将 java 对象存储到 Oracle 数据库的最佳数据类型

java - Scanner next() - 如何替换换行符 [java]

java - 使用 Java 从文本/字符串中获取特定 URL

java - 在 spring boot 中创建自定义查询时出错