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

Spring Boot创建Repository遇BeanCreationException:Not a managed type错误

问题解决:Not a managed type: class com.openclassrooms.api.models.Employee

核心原因

你使用的是Spring Boot 3.0.2,该版本基于Jakarta EE 9规范,所有JPA相关注解的包路径已从javax.persistence改为jakarta.persistence,但你的实体类仍在使用旧的Java EE包,同时pom.xml中存在冲突的依赖,导致Hibernate无法识别你的Employee类为JPA托管实体。

分步解决方案

1. 替换实体类的JPA注解包

将Employee类中所有javax.persistence.*的导入替换为jakarta.persistence.*:

package com.openclassrooms.api.models;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

import lombok.Data;

@Data
@Entity
@Table(name = "employees")
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    private String mail;

    private String password;

}

2. 清理pom.xml中的冲突依赖

移除以下两个依赖:

  • hibernate-jpa-2.1-api:这是Java EE时代的JPA规范包,与Jakarta EE不兼容
  • 手动添加的hibernate-core:spring-boot-starter-data-jpa已经包含了适配Spring Boot版本的Hibernate核心依赖,手动添加会导致版本冲突

修改后的pom.xml依赖部分:

<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>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

3. 可选:简化主类的包扫描配置

你的主类ApiApplication位于com.openclassrooms.api包下,@SpringBootApplication注解默认会扫描该包及其所有子包(包括com.openclassrooms.api.models),所以@EntityScan("com.openclassrooms.api.models")可以移除,简化主类代码:

package com.openclassrooms.api;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class, args);
        System.out.println("Hello World !");
    }

}

验证

完成以上修改后,重新编译并启动应用,BeanCreationException错误应该会消失,Spring可以正常识别Employee实体并创建EmployeeRepository Bean。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:21:31