引入jpa和mybatis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
启动报错
***************************
APPLICATION FAILED TO START
***************************
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.hibernate.jpa.boot.internal.PersistenceUnitInfoDescriptor.getValidationMode(PersistenceUnitInfoDescriptor.java:88)
The following method did not exist:
javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
The method's class, javax.persistence.spi.PersistenceUnitInfo, is available from the following locations:
jar:file:/C:/Users/xiongss/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar!/javax/persistence/spi/PersistenceUnitInfo.class
jar:file:/C:/Users/xiongss/.m2/repository/jakarta/persistence/jakarta.persistence-api/2.2.3/jakarta.persistence-api-2.2.3.jar!/javax/persistence/spi/PersistenceUnitInfo.class
It was loaded from the following location:
file:/C:/Users/xiongss/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of javax.persistence.spi.PersistenceUnitInfo
JPA Starter依赖中已经引入了aop-starter,jdbc-starter,spring-data-jpa,jakarta.persistence-api,jakarta.transaction-api和hibernate-core并排除了javax.persistence包,jakarta.persistence-api包中persistence类有getValidationMode()方法
根据maven包依赖图可知,tk.mybatis中的mapper.core包和mapper.base中引入persistence-api-1.0.jar包,这个包中PersistenceUnitInfo类中并没有getValidationMode()方法;
需要排除mybatis中的javax.persistence包。
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
<exclusions>
<exclusion>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
</exclusion>
</exclusions>
</dependency>
启动成功;
不成功的方法
将spring-boot-starter-data-jpa依赖改为spring-data-jpa;
报错Caused by: java.lang.ClassNotFoundException: javax.persistence.SynchronizationType
javax.persistence-api包中没有SynchronizationType,只能使用jakarta.persistence-api包