You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级至Spring Boot 3.0.2后SpringHibernateJpaPersistenceProvider未实现接口错误

Spring Boot 3.0.2升级后启动失败:EntityManagerFactory创建失败解决方案

错误核心

org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider 类未实现 jakarta.persistence.spi.PersistenceProvider 接口,导致entityManagerFactory Bean创建失败。

原因分析

Spring Boot 3.x 基于Jakarta EE 9+规范,所有Java EE相关API包名从javax.persistence迁移至jakarta.persistence。出现该错误的核心原因是项目中存在依赖版本不兼容或混合依赖:

  • 残留了基于javax.persistence的旧版JPA/Hibernate依赖
  • Spring Data JPA版本与Spring Boot 3.0.2不匹配

解决方案

  • 统一依赖版本管理:直接使用Spring Boot Parent或DependencyManagement控制依赖版本,避免手动指定版本导致的不兼容。示例Maven配置:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.2</version>
    <relativePath/>
</parent>

<dependencies>
    <!-- 引入Spring Data JPA Starter,无需指定版本 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>
  • 清理旧版javax依赖:通过依赖树排查并排除所有基于javax.persistence的依赖。执行Maven命令查看依赖树:
mvn dependency:tree

找到包含javax.persistence-api的依赖,在pom.xml中排除:

<dependency>
    <groupId>第三方依赖组ID</groupId>
    <artifactId>第三方依赖包ID</artifactId>
    <exclusions>
        <exclusion>
            <groupId>javax.persistence</groupId>
            <artifactId>javax.persistence-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 确保Hibernate版本适配:Spring Boot 3.0.2默认集成Hibernate 6.1.x(完全适配Jakarta EE),若手动指定Hibernate版本,必须使用6.0+版本,禁止使用基于javax的5.x版本。

  • 检查自定义JPA配置:若项目中有自定义LocalContainerEntityManagerFactoryBean或PersistenceProvider相关代码,确保所有引用的API都来自jakarta.persistence包,替换旧的javax.persistence相关导入。

内容的提问来源于stack exchange,提问作者Saurabh Rai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:25:30