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

标签 java hibernate jpa orm db2

我有一组实体。使用 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/

相关文章:

java - Achartengine 无法解析符号 setLineWidth

java - Hibernate - 难以理解的警告

java - 实体类中的属性有一个mappedBy值,该值确实存在于其所属实体中

java - JPA:何时选择多值关联与元素集合映射

java - 如何解决 Java 8 中的这个 'Lambdas should be replaced with method references' 声纳问题?

java - Spring Data Rest 支持 json 和 xml

java - 通用 super 参数

mysql - hibernate :MySql 与 ' ' 用户

java - Hibernate 模板翻译

java - EJB3 业务逻辑模式与实践