我有一组实体。当使用hibernate 4时,创建的表的id列标记为identity,而使用hibernate 5时,id列不会被标记为identity,也会生成序列。
当hibernate 5与预先存在的数据库对象一起使用并验证设置时,即使表的id列标记为identity,应用程序也会失败,说序列不存在。
为什么hibernate 5和4之间的行为存在差异?
是否可以在不更改实体和预先存在的数据库对象的情况下迁移到hibernate 5?
答案 0 :(得分:0)
如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"
/>
应该这样做。