我对 SpringBoot (1.3.0) 对 Hibernate5 的支持有点困惑。该参考列出了对 hibernate 4.3.11.Final 的依赖,但它也列出了对 SpringFramework 4.2.3 的依赖,其中包括 Hibernate5 支持。
是否只是添加额外的 Hibernate5 依赖项来覆盖引导包的问题?有人可以为我澄清一下吗?
我对 SpringBoot (1.3.0) 对 Hibernate5 的支持有点困惑。该参考列出了对 hibernate 4.3.11.Final 的依赖,但它也列出了对 SpringFramework 4.2.3 的依赖,其中包括 Hibernate5 支持。
是否只是添加额外的 Hibernate5 依赖项来覆盖引导包的问题?有人可以为我澄清一下吗?
您可以将 Hibernate 4.3 或 Hibernate 5.0 与 Spring Boot 1.3 一起使用。如您所见,Hibernate 4.3.x 是默认版本。
要使用 Hibernate 5.0,您应该覆盖hibernate.version
Spring Boot 的依赖管理中的属性。假设您使用的是 Maven:
<properties>
<hibernate.version>5.0.5.Final</hibernate.version>
</properties>
使用 Hibernate 5.0 时,与使用 Hibernate 4.3.x 的一大区别是您将失去 Spring Boot 的自定义命名策略。由于在 Hibernate 5.0 中进行了重大更改,您将在启动时看到如下警告:
2015-12-07 10:04:56.911 WARN 81371 --- [ main] org.hibernate.orm.deprecation : HHH90000006: Attempted to specify unsupported NamingStrategy via setting [hibernate.ejb.naming_strategy]; NamingStrategy has been removed in favor of the split ImplicitNamingStrategy and PhysicalNamingStrategy; use [hibernate.implicit_naming_strategy] or [hibernate.physical_naming_strategy], respectively, instead.
如果您不喜欢 Hibernate 5 的默认值,您可以在 Spring Boot中分别application.properties
使用spring.jpa.properties.hibernate.implicit_naming_strategy
和spring.jpa.properties.hibernate.physical_naming_strategy
属性指定自定义的隐式或物理命名策略。
2016 年 7 月更新:随着 Spring Boot 1.4.0 的发布,默认的Hibernate 5 被用作默认的 JPA 持久性提供程序。
现在有一张关于迁移到 Hibernate 5的票- 似乎主要的挫折是一些名称策略不兼容。截至目前,门票目前预定1.4.0
多谢你们!经过多次试验,这个解决方案对我来说就像一个魅力!我实现了自定义策略并将它们设置在 application.yml 中,如下所示:
jpa:
database: MYSQL
database-platform: org.hibernate.dialect.MySQL5Dialect
properties:
hibernate:
implicit_naming_strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
physical_naming_strategy: com.quicken.ups.entities.utils.DBFieldNamingStrategy