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

时间:2014-06-04 20:45:21

标签: java oracle hibernate jpa orm

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

在一次转换中,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

所以Oracle抛出异常:

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

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

1 个答案:

答案 0 :(得分:1)

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