避免在 Hibernate 5.1.0 中创建全局临时表

Posted

技术标签:

【中文标题】避免在 Hibernate 5.1.0 中创建全局临时表【英文标题】:Avoid Global Temporary Table creation in Hibernate 5.1.0 【发布时间】:2017-01-10 09:59:03 【问题描述】:

Hibernate 创建以 HT_ 开头的全局临时表名称,用于批量更新和删除。

我们不应该/不允许从应用程序创建任何表。

我们如何关闭休眠的表全局临时创建?

【问题讨论】:

Hibernate HT_ Temporary Tables ON JOINED inheritance, Migration from Hibernate 3.4.0.GA To 5.1的可能重复 【参考方案1】:

hibernate 定义了几个选项,您可以根据您的数据库功能进行选择 1-InlineIdsInClauseBulkIdStrategy 2-InlineIdsSubSelectValueListBulkIdStrategy 3-InlineIdsOrClauseBulkIdStrategy 4-CteValuesListBulkIdStrategy

使用这些策略的示例

<property name="hibernate.hql.bulk_id_strategy"
          value="org.hibernate.hql.spi.id.inline.InlineIdsInClauseBulkIdStrategy"
/>

有用的链接:https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#batch

【讨论】:

这适用于 hibernate 5.2 以后的版本,但遗憾的是这不适用于 5.1 版本,因此您需要升级到更新的版本。

以上是关于避免在 Hibernate 5.1.0 中创建全局临时表的主要内容,如果未能解决你的问题,请参考以下文章

避免在内存中创建多个代码副本

如何在 Hibernate 会话中使用全局临时表?

如何在 Hibernate 中创建 OneToMany 映射? [复制]

如何在运行时在 Hibernate 中创建数据库?

如何在 Hibernate 中创建多态/通用多对多关系?

如何在 IntelliJ 和 H2 中创建 Hibernate 映射