Spring Boot启动报错找不到FormularioDinamicoRepository类型Bean如何解决
问题原因排查
- 原因1:JPA仓库扫描注解未启用
你代码里@EnableJpaRepositories("br.com.maptriz.formulario_dinamico.repository")被注释掉了,Spring Data JPA的Repository接口需要该注解触发扫描才能注册为Spring托管的Bean,注释后接口无法被识别,自然无法注入。 - 原因2:实体类字段注解错误
FormularioDinamico类中的tabelaId字段是Long基础类型,却加了仅用于关联其他实体类的@ManyToOne注解,该错误会导致JPA初始化失败,间接影响Repository的正常注册。
解决方案
- 启用JPA仓库扫描
取消FormularioDinamicoApplication.java中@EnableJpaRepositories注解的注释,修改后代码如下:
package br.com.maptriz.formulario_dinamico; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @EnableJpaRepositories("br.com.maptriz.formulario_dinamico.repository") @SpringBootApplication public class FormularioDinamicoApplication { public static void main(String[] args) { SpringApplication.run(FormularioDinamicoApplication.class, args); } }
- 修正实体类字段注解
删除tabelaId字段上错误的关联注解,改用普通字段映射注解即可,修改后代码如下:
// 原错误代码 // @ManyToOne // @JoinColumn(name="tipo_tabela") // private Long tabelaId; // 修正后代码 @Column(name = "tipo_tabela") private Long tabelaId;
- 可选优化:
JpaRepository已经内置了findAll()方法,无需在FormularioDinamicoRepository中重复声明,可以直接删除该自定义方法。
修改完成后重新启动项目即可正常注入Repository Bean。
内容的提问来源于stack exchange,提问作者João Felipe Leonello
相关产品推荐
相关产品推荐

