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 的所有传递依赖项: -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文件备份 可以运行的
运行 jar 时出现 Spring Boot 错误,但在 IDE 中工作正常(spring-boot-starter-data-jpa)