Spring Boot 和 JPA 2.0
Posted
技术标签:
【中文标题】Spring Boot 和 JPA 2.0【英文标题】:Spring Boot and 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'
这可能吗?
【问题讨论】:
【参考方案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"
瞧!
【讨论】:
以上是关于Spring Boot 和 JPA 2.0的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot2.0 JPA 实现分页(简单查询分页、复杂查询分页)
Spring Boot 揭秘与实战 服务器篇 - 其他内嵌服务器 发表于 2017-01-03 | Spring框架 | Spri