Spring Boot整合MySQL时EmployeeRepository创建失败求助
Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.jpa.test.EmployeeDetails
at org.hibernate.metamodel.model.domain.internal.JpaMetamodelImpl.managedType(JpaMetamodelImpl.java:192) ~[hibernate-core-6.2.9.Final.jar:6.2.9.Final]
...
--- # 解决方案 ### 核心原因 你使用的是Spring Boot 3.1.4,该版本基于**Jakarta EE 9**,要求JPA注解使用`jakarta.persistence`包,但你的`EmployeeDetails`实体类中引用的是旧的`javax.persistence`包,导致Hibernate无法识别该类为JPA管理实体。 ### 修复步骤 1. **替换实体类的注解包** 修改`EmployeeDetails.java`中的导入语句,将`javax.persistence`替换为`jakarta.persistence`: ```java import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id;
- 验证自动扫描配置
你的主类BootjpaexampleApplication在根包com.jpa.test下,Spring会自动扫描子包(com.jpa.test.entities、com.jpa.test.dao)中的实体和Repository,无需额外配置。如果后续调整包结构,可在主类上添加以下注解指定扫描路径:
@SpringBootApplication @EnableJpaRepositories(basePackages = "com.jpa.test.dao") @EntityScan(basePackages = "com.jpa.test.entities") public class BootjpaexampleApplication { // ... 主方法代码 }
- 清理依赖冲突
确保项目依赖中没有同时引入javax.persistence和jakarta.persistence相关包,仅保留Spring Boot Starter JPA和MySQL驱动依赖:
<!-- Maven依赖示例 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> </dependencies>
内容的提问来源于stack exchange,提问作者Jatin Bundel
相关产品推荐
相关产品推荐

