Maven + Spring Boot + JPA + Hibernate 项目有问题吗?

Posted

技术标签:

【中文标题】Maven + Spring Boot + JPA + Hibernate 项目有问题吗?【英文标题】:Issue with Maven + Spring Boot + JPA + Hibernate project? 【发布时间】:2017-06-16 13:35:54 【问题描述】:

我有一个父 POM 项目,它声明 spring 版本为 3.2,休眠实体管理器版本为 4.1.1(让我们调用 parent,P)。我有另一个项目,它是该父项的子项,并继承了提到的依赖项管理(我们称之为子项 C1)。我正在构建一个新项目,我希望提到的父母的孩子也依赖于孩子 C1,(让我们称这个新孩子 C2)。

父 P1(父 Pom 项目,声明 spring 3.2 和 hibernate 4.1.1) Child C1(Java 项目,使用 Parent P1 的依赖管理) Child C2(新的J2EE项目,依赖于Child C1,将P1声明为父级,但有自己的依赖管理。使用spring-boot-dependencies(1.3.2),hibernate-entitymanager(4.3.11),spring-framework-bom( 4.2.4),依赖于 spring-boot-starter-data-jpa 和 spring-boot-starter-data-rest。

为了完成这项工作,我一直在尝试解决各种依赖问题。但是一直卡在一个上。请看下文。请建议我应该如何管理这些依赖项? spring-data-commons 的依赖应该如何管理?

引起:java.lang.AbstractMethodError: org.springframework.data.repository.core.support.RepositoryFactorySupport.getTargetRepository(Lorg/springframework/data/repository/core/RepositoryInformation;)Ljava/lang/Object; 在 org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:185) ~[spring-data-commons-1.11.2.RELEASE.jar:na] 在 org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251) ~[spring-data-commons-1.11.2.RELEASE.jar:na] 在 org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237) ~[spring-data-commons-1.11.2.RELEASE.jar:na] 在 org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:84) ~[spring-data-jpa-1.3.2.RELEASE.jar:na] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] ...省略了50个常用框架

【问题讨论】:

版本冲突。检查您的 Spring Data JPA 和 Spring Data Core 版本 Spring Boot 不适用于 spring 3.2 并且堆栈跟踪表明 jar 之间的版本不匹配。 【参考方案1】:

从子 C1 中排除 Spring 3.2 传递依赖:

<dependency>
    <groupId></groupId>
    <artifactId>C1</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactIdId>spring-XXXX</artifactId>
        </exclusion>
    </exclusions>
</dependency>

【讨论】:

已经这样做了。事实上,我排除了来自子 C1、子 C2 的 pom 的所有传递依赖项: - C1** 然后尝试更新您的spring-data-jpa 版本。在您的堆栈跟踪中,我看到您在1.11.2.RELEASE 版本中使用spring-data-commons,在1.3.2.RELEASE 版本中使用spring-data-jpa,这是一个相当旧的版本。

以上是关于Maven + Spring Boot + JPA + Hibernate 项目有问题吗?的主要内容,如果未能解决你的问题,请参考以下文章

spring boot jpa mysql porm文件备份 可以运行的

Spring boot+JPA+Druid

Spring boot data jpa 一

运行 jar 时出现 Spring Boot 错误,但在 IDE 中工作正常(spring-boot-starter-data-jpa)

Spring Boot + Jpa(Hibernate) 架构基本配置

spring boot整合mybatis