当前位置: 首页 > 知识库问答 >
问题:

Spring Boot中JPA存储库“没有符合条件的bean类型”

唐默
2023-03-14

我正在用Spring Boot实现Rest API。因为我的实体类来自另一个包,所以我必须用注释EntityScan来指定它。另外,我使用EnableJParepositories来指定定义JPA存储库的包。下面是我的项目的样子:

//Application.java

@Configuration
@EnableAutoConfiguration
@ComponentScan
@EntityScan("org.mdacc.rists.cghub.model")
@EnableJpaRepositories("org.mdacc.rists.cghub.ws.repository") 

在我的controller类中,我有一个SeqService对象Autowired。

//SeqController.java

@Autowired private SeqService seqService;

@RequestMapping(value = "/api/seqs", method = GET, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<List<SeqTb>> getSeqs() {
    List<SeqTb> seqs = seqService.findAll();
    return new ResponseEntity<List<SeqTb>>(seqs, HttpStatus.OK);
}

seqService是一个接口,我从它为seqServiceBean创建了一个Bean类。在SeqServiceBean中,我对JPA存储库进行了描述:

// SeqServiceBean.java

@Autowired private SeqRepository seqRepository;

@Override
public List<SeqTb> findAll() {
    List<SeqTb> seqs = seqRepository.findAll();
    return seqs;
}

//SeqRepository.java

@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {

    @Override
    public List<SeqTb> findAll();

    public SeqTb findByAnalysisId(String analysisId);
}
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.mda.rists.cghub.ws.repository.SeqRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]

我不明白这个错误。和排位赛bean有什么关系?

共有1个答案

鲜于致远
2023-03-14

您在enableJParepositories中扫描了错误的包。没有org.mdacc.rists.chub.ws.repository包。所以,改用这个:

@EnableJpaRepositories("org.mda.rists.cghub.ws.repository") 

Spring Boot不需要任何特定的代码布局来工作,但是,有一些最佳实践将对您有所帮助。请查看spring boot文档中关于构造代码的最佳实践。

 类似资料:
  • 我正在用Spring Boot实现Rest API。由于我的实体类来自另一个包的包,所以我必须使用注释来指定。此外,我使用指定定义JPA存储库的包。下面是我的项目的样子: 在我的controller类中,我有一个SeqService对象自动连线。 是一个接口,我通过它为创建了一个Bean类。在中,我自动连接了JPA存储库: 我不明白这个错误。跟排位bean有什么关系?

  • 运行在Mongo存储库的单元测试中返回以下错误: UserRepositoryMongoImpl.java UserRepositoryMongoImplTests.java 最后一个:pom.xml null

  • 我最近尝试将r2dbc与postgres“0.8.8.RELEASE”(pg r2dbc maven dependecy)和spring boot“2.5.2”一起使用 我在应用程序中声明了以下属性。yml: 我的pplication.java: 我明确指出,“fr.company.common”在另一个子项目中,有自己的实体 我的DatabaseConfig类: 我的存储库: 我的实体: 最后,

  • 我已经浏览了http://docs.spring.io/spring-data/redis/docs/current/reference/html/,对我来说没有什么新内容。我想知道我错过了什么,我将感谢任何投入。 我使用Spring Data Redis 1.7.2.Release,Spring Boot 1.3.6.Release

  • 我试图通过BaseRepository接口和BaseRepositoryImpl扩展**SimpleParepository** BaseRepositoryImpl扩展了**SimpleParepository**并实现了BaseRepository。 此外,我还有一些其他的存储库,如CandidateRepository和员工存储库,它们扩展了基本存储库。 下面您可以看到以下错误代码: 要查看

  • 我有一个springboot项目,为了执行请求,我正在连接到我的mysql数据库。我有一个实体ExportBatch: 我在ExportBatchRepository中定义了一个新方法: 在我的控制器里,我是这样做的: 当我调用“/GetLastBatchsProblemes”时会遇到这个异常:java.lang.ClassCastException:[Ljava.lang.Object;不能强制