我有一组实体。使用 hibernate 4 时,创建表时将 id 列标记为身份,而使用 hibernate 5 时,id 列不会标记为身份,并且也会生成序列。
当使用 hibernate 5 和预先存在的数据库对象并验证设置时,应用程序失败,提示序列不存在,即使表具有标记为身份的 id 列。
为什么 Hibernate 5 和 4 之间的行为存在这种差异?
是否可以在不更改实体和预先存在的数据库对象的情况下迁移到 hibernate 5?
最佳答案
如 Migration Guides 中所述,Hibernate 5 已切换到新的标识符生成器。
一个副作用是,对于 GenerationType.AUTO
过去作为默认标识符的 IDENTITY,现在您将获得 TABLE 标识符。查看HHH-11014 Jiraa 问题了解更多详细信息。
现在,要使用旧的标识符生成器,您只需将 hibernate.id.new_generator_mappings
配置属性设置为 false
:
<property
name="hibernate.id.new_generator_mappings"
value="false"
/>
应该可以了。
关于java - Hibernate 5 创建 ID 未标记为 IDENTITY 的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46058087/