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

为何突然无法导入jakarta.persistence包?

问题根源与解决方案

核心问题:依赖版本冲突与不兼容

你的问题出在Spring Boot版本、Hibernate版本以及JPA API的版本不匹配,导致类加载时出现混乱:

  • Spring Boot 2.5.x系列默认依赖Hibernate 5.x,而Hibernate 5.x使用的是javax.persistence包(而非jakarta.persistence)
  • 你手动引入了Hibernate 6.1.4.Final,Hibernate 6.x已经切换到jakarta.persistence规范,但Spring Boot 2.x并未适配这个切换,两者出现冲突
  • 手动添加的jakarta.persistence-api:2.2.3也和Spring Boot starter自带的JPA API依赖产生冲突,导致IDE无法正确识别

分步解决方案

1. 清理冲突依赖

移除pom.xml中以下多余/冲突的依赖:

  • 手动添加的jakarta.persistence-api依赖(Spring Boot starter已经包含对应JPA API)
  • 手动添加的hibernate-core依赖(让Spring Boot starter管理Hibernate版本,保证兼容性)

2. 统一Spring Boot版本

你当前的spring-boot-starter-web是2.4.6,spring-boot-starter-data-jpa是2.5.4,版本不一致会引发依赖问题。建议使用Spring Boot父pom来统一管理所有starter版本,避免手动指定版本出错。

3. 修改后的完整pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 引入Spring Boot父pom,统一管理所有依赖版本 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/>
    </parent>

    <groupId>com.myGroupId</groupId>
    <artifactId>myArtifact</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>

    <properties>
        <maven.compiler.source>15</maven.compiler.source>
        <maven.compiler.target>15</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.centralbanker.CentralBankerApp</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
            </plugin>
        </plugins>
    </build>

</project>

4. 刷新依赖并修复导入

  • 在IntelliJ中点击Maven面板的Reload All Maven Projects按钮,刷新依赖
  • 清理本地Maven仓库缓存(可选:执行命令mvn clean install -U)
  • 将实体类中的jakarta.persistence导入替换为javax.persistence(Spring Boot 2.x环境下的正确包路径)

补充说明

如果一定要使用jakarta.persistence包,需要升级到Spring Boot 3.x,但Spring Boot 3.x要求Java版本至少为17,而你当前使用的是Java 15,因此无法直接升级。建议保持Spring Boot 2.x+Java 15的组合,使用javax.persistence相关注解。

内容的提问来源于stack exchange,提问作者Aidan Loten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:35:00