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

从javax.persistence迁移到jakarta.persistence后出现Entity not a managed type错误

问题根因与解决方案

1. 优先确认Spring Boot版本兼容性

Spring Boot 2.x及更低版本原生仅支持javax.persistence注解,只有Spring Boot 3.x及以上版本才默认适配jakarta.persistence注解体系。如果当前项目使用的是2.x版本的Spring Boot,会直接导致jakarta的@Entity注解不被识别。
如果必须使用2.x版本的Spring Boot,需要额外引入Jakarta EE兼容包,否则建议直接升级到Spring Boot 3.x版本解决注解适配问题。

2. 补充跨模块扫描配置

由于你的实体类和JPA Repository拆分在不同模块,Spring默认仅扫描启动类所在包及其子包下的组件,需要在启动类上补充两个扫描注解:

@SpringBootApplication
@EntityScan(basePackages = "reviewlist.core") // 填实体类所在的顶层包路径
@EnableJpaRepositories(basePackages = "你的Repository所在包路径") // 填CrudRepository实现类所在的包路径
public class RestServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(RestServerApplication.class, args);
    }
}

3. 排查依赖冲突

检查项目所有模块的pom.xml,确保不要混用javax和jakarta的相关依赖:

  • 排除所有javax.persistence:javax.persistence-api依赖
  • 确保引入的spring-boot-starter-data-jpa为3.x版本
  • 确保Hibernate核心依赖版本为6.x及以上(对应Jakarta EE标准)

4. 手动配置Hibernate实体映射(可选,对应导师建议)

如果需要放弃注解改用手动配置,需要自定义JPA配置类,指定实体扫描路径:

@Configuration
@EnableJpaRepositories(basePackages = "你的Repository包路径")
public class JpaConfig {
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource);
        // 实体类所在包路径
        em.setPackagesToScan("reviewlist.core");
        em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
        return em;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:45:03