【问题标题】:Spring Boot and JPA 2.0Spring Boot 和 JPA 2.0
【发布时间】:2015-02-05 15:14:25
【问题描述】:

我想降级 JPA 版本并使用 JPA 2.0。 Spring Boot 的 Data JPA starter 带有支持 JPA 2.1 的 Hibernate 4.3。根据docs,我应该可以在我的 build.gradle 中做到这一点:

'org.hibernate:hibernate-entitymanager:4.2.16.Final'

但是Hibernate 4.3 仍在使用中。并且没有办法将 javax.persistence:hibernate-jpa 依赖更改为

'org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final'

这可能吗?

【问题讨论】:

    标签: hibernate gradle jpa-2.0 spring-boot


    【解决方案1】:

    我使用的是 Spring boot 1.5.8.RELEASE,我使用的是 java 版本的 hibernate core 降级

    <properties>
        <finalName>${project.artifactId}</finalName>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <hibernate.version>4.2.21.Final</hibernate.version>
    </properties>
    

    【讨论】:

      【解决方案2】:

      似乎我误解了 Spring Boot 指南。对于任何想知道答案的人来说,仅仅在属性中声明一个版本并不像 Maven 那样简单。但是在查看了 Gradle 关于如何替换依赖项的文档后,我遇到了这一部分: Substituting a dependency module with a compatible replacement

      所以基本上我需要做的就是:

      configurations.all {
          resolutionStrategy.eachDependency { DependencyResolveDetails details ->
              // Use Hibernate 4.2
              if (details.requested.name == "hibernate-entitymanager") {
                  details.useTarget "org.hibernate:hibernate-entitymanager:4.2.16.Final"
              }
              // Use JPA 2.0
              if (details.requested.name == "hibernate-jpa-2.1-api") {
                  details.useTarget "org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final"
              }
          }
      }
      

      瞧!

      【讨论】:

        猜你喜欢
        • 2014-06-02
        • 2020-01-19
        • 1970-01-01
        • 2017-11-29
        • 2022-01-24
        • 1970-01-01
        • 2017-09-17
        • 2018-08-06
        • 2018-07-10
        相关资源
        最近更新 更多