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

Spring Boot实体类在扫描包内却报‘Not a managed type’错误

可能的原因及解决方案

1. 实体类未标注JPA核心注解

Products类必须标注@Entity注解,且主键字段需标注@Id(或@EmbeddedId),否则Spring Data JPA无法将其识别为托管实体。示例代码:

@Entity
public class Products {
    @Id
    private Long id;
    // 其他字段、构造方法及 getter/setter
}

2. @EntityScan注解放置位置错误

@EntityScan必须标注在Spring Boot主启动类或被@Configuration注解的配置类上,放在普通类上不会生效。正确示例:

@SpringBootApplication
@EntityScan(basePackages = "com.simple.model")
public class SimpleApplication {
    public static void main(String[] args) {
        SpringApplication.run(SimpleApplication.class, args);
    }
}

3. 依赖版本不兼容或缺失

Spring Boot 3.1.0基于Jakarta EE 9,需确保引入的是Jakarta Persistence API相关依赖,而非旧版Javax依赖。检查项目依赖:

  • Maven依赖示例:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

避免手动引入javax.persistence:javax.persistence-api这类旧依赖,Spring Boot Starter会自动引入适配的Jakarta版本。

4. 包路径拼写错误

核对@EntityScan的basePackages值是否与实体类实际包名完全一致——Java包名大小写敏感,若出现拼写错误(比如把com.simple.model写成com.simple.models),会导致扫描失效。

5. 实体类不在编译路径内

确认Products类位于项目源码目录(如Maven的src/main/java),若放在src/test/java或其他非源码目录,编译时不会被打包进应用,Spring无法扫描到该类。

6. 多模块项目的依赖或扫描范围问题

如果是多模块项目,需确保主启动类所在模块已依赖实体类所在模块,且@EntityScan的包范围覆盖实体类所在模块的包路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:26:06