Using Spring 4.0 with spring -data-jpa

I am using Spring 4.0 in my JavaEE application and I tried using Spring -data-jpa.

However, when I add the Spring -data-jpa dependency, I find that Spring -data-jpa will depend on Spring -3.x.

Then I wonder if this will cause any problem? Since my application will have Spring -4.x with Spring -3.x.

Does anyone have the same experience?


Update:

I am using Spring -data-jpg-1.4.3:

<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.4.3.RELEASE</version> </dependency> 

But when I started mvn dependency:tree , I got the following:

 +- org.springframework:spring-context:jar:4.0.0.RELEASE:compile | +- org.springframework:spring-beans:jar:4.0.0.RELEASE:compile | +- org.springframework:spring-core:jar:4.0.0.RELEASE:compile | | \- commons-logging:commons-logging:jar:1.1.1:compile | \- org.springframework:spring-expression:jar:4.0.0.RELEASE:compile +- org.springframework:spring-aop:jar:4.0.0.RELEASE:compile | \- aopalliance:aopalliance:jar:1.0:compile +- org.springframework.data:spring-data-jpa:jar:1.4.3.RELEASE:compile | +- org.springframework.data:spring-data-commons:jar:1.6.3.RELEASE:compile | +- org.springframework:spring-orm:jar:3.1.4.RELEASE:compile | | \- org.springframework:spring-jdbc:jar:3.1.4.RELEASE:compile | +- org.springframework:spring-tx:jar:3.1.4.RELEASE:compile | +- org.aspectj:aspectjrt:jar:1.7.2:compile | +- org.slf4j:slf4j-api:jar:1.7.1:compile | \- org.slf4j:jcl-over-slf4j:jar:1.7.1:runtime +- org.aspectj:aspectjweaver:jar:1.7.4:compile +- org.springframework:spring-test:jar:4.0.0.RELEASE:test 

It seems that Spring 4.0 .. is mixed with Spring 3.1.4 ..

+6
source share
1 answer

This is a bug in spring -data-jpa 1.4.3.RELEASE pom denepdency.
What actually happens is that it loads the spring dependencies that exist in this maven mom instead of the ones you want to import.
Short answer: add this as a parent project in maven:

 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.0.0.RC5</version> </parent> 

so that he can inherit the correct dependencies.

Another way to solve this is to use the <exclusions> tag to exclude them and then import the correct dependencies, but this takes longer and is not so clean. If you do not want to add spring-boot-start-parent-parent , then here is how to solve it.

 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.4.1.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> ... </exclusion> </exclusions> </dependency> 

See here for more details.

+7
source

All Articles