Spring Boot文档注册API启动报错:无法找到Repository Bean
问题分析
启动报错核心是Spring无法创建BeneficiarioRepository和DocumentoRepository的Bean,根源有两点:
- 依赖版本不兼容:你使用的Spring Boot 3.1.5基于Jakarta EE规范,但手动引入了适配Java EE的Hibernate 5.3.10,同时手动添加的
spring-data-jpa依赖与Spring Boot starter自带的依赖冲突。 - 实体类API包错误:Spring Boot 3要求JPA实体使用
jakarta.persistence.*包,而非旧的javax.persistence.*,旧包会导致JPA无法识别实体,进而无法生成Repository代理类。
修复步骤
1. 修正pom.xml依赖
移除手动添加的hibernate-core和spring-data-jpa依赖,改用Spring Boot官方的spring-boot-starter-data-jpa,它会自动管理兼容的Hibernate、Spring Data JPA版本:
<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>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </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>
2. 更新实体类的导入包
将两个实体类中的javax.persistence.*替换为jakarta.persistence.*:
修改后的Beneficiario实体
package pldesaude.CadastroDeBeneficiario.entity; import jakarta.persistence.*; import java.util.Date; @Entity public class Beneficiario { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String nome; @Temporal(TemporalType.DATE) private Date dataNascimento; // getter和setter代码保持不变 }
修改后的Documento实体
package pldesaude.CadastroDeBeneficiario.entity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import java.util.Date; @Entity public class Documento { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String tipoDocumento; private String descricao; private Date dataAtualizacao; // getter和setter代码保持不变 }
3. 清理并重建项目
执行Maven命令清理缓存并重新构建:
mvn clean install
完成后重启应用,即可正常启动。
内容的提问来源于stack exchange,提问作者Rodrigo Santos
相关产品推荐
相关产品推荐

