休眠5创建ID不标记为IDENTITY

问题描述:

我有一组实体。当使用hibernate 4时,这些表是使用标记为标识的id列创建的,而当使用hibernate 5时,id列不会被标记为标识,并且也会生成序列。休眠5创建ID不标记为IDENTITY

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

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

是否可以迁移到休眠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" 
/> 

应该这样做。