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/