15

我对 SpringBoot (1.3.0) 对 Hibernate5 的支持有点困惑。该参考列出了对 hibernate 4.3.11.Final 的依赖,但它也列出了对 SpringFramework 4.2.3 的依赖,其中包括 Hibernate5 支持。

是否只是添加额外的 Hibernate5 依赖项来覆盖引导包的问题?有人可以为我澄清一下吗?

4

3 回答 3

16

您可以将 Hibernate 4.3 或 Hibernate 5.0 与 Spring Boot 1.3 一起使用。如您所见,Hibernate 4.3.x 是默认版本。

要使用 Hibernate 5.0,您应该覆盖hibernate.versionSpring 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_strategyspring.jpa.properties.hibernate.physical_naming_strategy属性指定自定义的隐式或物理命名策略。

于 2015-12-07T10:15:37.827 回答
6

2016 年 7 月更新:随着 Spring Boot 1.4.0 的发布,默认的Hibernate 5 被用作默认的 JPA 持久性提供程序


现在有一张关于迁移到 Hibernate 5的票- 似乎主要的挫折是一些名称策略不兼容。截至目前,门票目前预定1.4.0

于 2015-12-07T00:16:20.807 回答
-1

多谢你们!经过多次试验,这个解决方案对我来说就像一个魅力!我实现了自定义策略并将它们设置在 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
于 2016-04-19T14:53:06.230 回答