3.2.2.5. Hibernate 标识符自动生成值


Hibernate 3.5 引入了名为 hibernate.id.new_generator_mappings 的核心属性,它指定在使用 @GeneratedValue 时如何生成标识符或序列号。在 JBoss EAP 6 里,这个属性的默认值是:
  • 当您部署原声 Hibernate 应用程序时,这个默认值是 false
  • 当您部署 JPA 应用程序时,这个默认值是 true
新应用程序准则

使用 @GeneratedValue 的新应用程序应该设置 hibernate.id.new_generator_mappings 属性为 true。这是首选的设置,因为对于不同的数据库它更容易移植。在多数情况下,它的效率更高;在某些情况下,它解决了和 JPA 2 规格的兼容问题。

  • 对于新的 JPA 应用程序,JBoss EAP 6 默认 hibernate.id.new_generator_mappings 属性为 true 且不应该被改变。
  • 对于新的原生 Hibernate 应用程序,JBoss EAP 6 默认 hibernate.id.new_generator_mappings 属性为 false。您应该设置它为 true
现有的 JBoss EAP 5 应用程序的准则

当移植到 JBoss EAP 6 时,现有的使用 @GeneratedValue 注解的应用程序应该确保使用相同的生成器来为新条目创建主键值。

  • 对于现有的 JPA 应用程序,JBoss EAP 6 默认 hibernate.id.new_generator_mappings 属性为 true。您应该在 persistence.xml 里将这个属性设置为 false
  • 对于现有的原生 Hibernate 应用程序,JBoss EAP 6 默认 hibernate.id.new_generator_mappings 属性为 false 且不应该被改变。
关于这些属性设置的更多信息,请参考 第 3.2.2.3 节 “持久化单元属性”
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.