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

Spring Boot 2.7.3升级至3.0.2后EntityManagerFactory创建失败求助

问题:Spring Boot 3.x升级后EntityManagerFactory创建失败

将Spring Boot从2.7.3升级至3.0.0后,代码出现异常,EntityManagerFactory无法正常初始化,核心报错如下:

错误:Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaSharedEM_entityManagerFactory': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument

当前环境:Spring Boot 3.0.2,hibernate-core 6.1.6.Final


依赖配置详情

Gradle变量与插件配置

junitVersion=4.13.1
awsSDKVersion=1.11+
testPostgresVersion=1.15.0
jacocoVersion=0.8.7
guavaVersion=31.1-jre
servicePort=80
version=22.1.0
serviceName=Test
postgresJdbcVersion=42.4.1
hibernateVersion=6.1.6.Final
secretsManagerJdbcVersion=1.0.5
secretsManagerCacheVersion=1.0.1
flywayVersion=6.4.3
jakartaVersion=3.1.0
httpclient5=5.2.1

plugins {
    id 'java-library'
    id 'idea'
    id 'org.springframework.boot' version '3.0.2' apply false
    id 'io.spring.dependency-management' version '1.1.0'
    id 'com.test.gradle.minion-application' version '5.+'
}

jacoco {
    toolVersion = "${jacocoVersion}"
}

mainClassName='com.test.modelgenerator.ModelGeneratorApplication'

minion {
    maintainer='test-team@incontact.com'
    baseImage='111111111.dkr.ecr.us-west-2.amazonaws.com/workbench-base-java17:2-1.0.0'
}

wrapper {
    gradleVersion = '7.6'
}

jar {
    enabled=true
}
dependencyManagement {
    imports {
        mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
    }
}

configurations.all {
    // check for updates every build
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

依赖声明

dependencies {
    implementation "org.apache.logging.log4j:log4j-core:2.17.1"
    implementation "org.apache.logging.log4j:log4j-api:2.17.1"
    implementation "org.apache.logging.log4j:log4j-1.2-api:2.17.1"
    implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.17.1'
   
    implementation 'org.springframework.retry:spring-retry'
    implementation ("org.springframework.boot:spring-boot-starter-data-jpa"){
        exclude group : 'org.yaml' , module : 'snakeyaml'
    }
    implementation 'org.springframework:spring-aspects'
   
    implementation "com.amazonaws:aws-java-sdk-dynamodb:${awsSDKVersion}"
    implementation ("com.amazonaws:aws-java-sdk-core:${awsSDKVersion}"){
        exclude group : 'org.yaml' , module : 'snakeyaml'
    }
    implementation "com.amazonaws:aws-java-sdk-ssm:${awsSDKVersion}"
    implementation "com.google.guava:guava:${guavaVersion}"
    implementation "org.flywaydb:flyway-core:${flywayVersion}"
    implementation group: 'commons-io', name: 'commons-io', version: '2.7'
    //  For assuming role in local dev mode
    implementation "com.amazonaws:aws-java-sdk-sts:${awsSDKVersion}"
    implementation "com.amazonaws.secretsmanager:aws-secretsmanager-jdbc:${secretsManagerJdbcVersion}"
    implementation "com.amazonaws.secretsmanager:aws-secretsmanager-caching-java:${secretsManagerCacheVersion}"
    implementation "org.postgresql:postgresql:${postgresJdbcVersion}"
    //implementation "org.hibernate:hibernate-c3p0:${hibernateVersion}"
    implementation "jakarta.persistence:jakarta.persistence-api:${jakartaVersion}"
    implementation "org.apache.httpcomponents.client5:httpclient5:${httpclient5}"
    testImplementation "cloud.localstack:localstack-utils:${localStackUtilsVersion}"
    testImplementation "org.testcontainers:postgresql:${testPostgresVersion}"
    testImplementation "junit:junit:${junitVersion}"
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
        exclude group : 'org.yaml' , module : 'snakeyaml'
    }
}

排查与修复方案

  • 移除显式引入的Jakarta Persistence API依赖:Spring Boot 3.x的spring-boot-starter-data-jpa已经通过官方BOM管理了适配的Jakarta Persistence API版本,手动引入的jakarta.persistence:jakarta.persistence-api:3.1.0会导致版本冲突,引发类加载异常,直接删除该依赖即可。
  • 升级Flyway版本:当前使用的Flyway 6.4.3不兼容Spring Boot 3.x的Jakarta EE环境,建议升级至Flyway 9.x及以上版本(Spring Boot 3.0.x推荐版本为9.1.1+),避免数据库迁移模块与JPA组件的兼容性问题。
  • 更新AWS SDK版本:awsSDKVersion=1.11+是老旧的AWS SDK v1版本,存在Java 17和Jakarta环境的兼容性风险,建议升级到AWS SDK v2,或者使用AWS SDK v1中支持Java 17的最新版本(如1.12.500+)。
  • 适配JPA配置属性:检查项目配置文件(application.properties/yml),将所有javax.persistence.*开头的属性替换为jakarta.persistence.*,确保配置适配Jakarta EE规范。
  • 检查自定义EntityManagerFactory配置:如果项目中有自定义的EntityManagerFactory Bean,确认所有相关类的包路径已从javax.persistence切换为jakarta.persistence,Spring Boot 3.x不再支持javax相关的JPA API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:45:59