Hibernate 5创建ID未标记为IDENTITY的表

时间:2017-09-05 14:59:29

标签: java hibernate jpa orm db2

我有一组实体。当使用hibernate 4时,创建的表的id列标记为identity,而使用hibernate 5时,id列不会被标记为identity,也会生成序列。

当hibernate 5与预先存在的数据库对象一起使用并验证设置时,即使表的id列标记为identity,应用程序也会失败,说序列不存在。

为什么hibernate 5和4之间的行为存在差异?

是否可以在不更改实体和预先存在的数据库对象的情况下迁移到hibernate 5?

1 个答案:

答案 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"
/>

应该这样做。