"No qualifying bean" 用于 Groovy Spring JPA 应用程序中的存储库

"No qualifying bean" for repository in Groovy Spring JPA application

我知道有 一堆 关于这个主题的类似问题,但是到目前为止我发现的所有问题要么不完全是我的情况,要么参考一个根据我的阅读,以下解决方案中的一些已过时或不适用:

错误:

    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean 
of type 'com.package.repository.ChannelBalanceAdjustmentRepository' available: 
expected at least 1 bean which qualifies as autowire candidate. 
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

还有一条错误信息:

CashReinvestDividendSpec > test FAILED
    java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132
        Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at AutowiredAnnotationBeanPostProcessor.java:659
            Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at AutowiredAnnotationBeanPostProcessor.java:659
                Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException at DefaultListableBeanFactory.java:1790

存储库:

package com.package.repository

import com.package.domain.Channel
import com.package.domain.ChannelBalanceAdjustment
import org.springframework.data.repository.CrudRepository

import java.time.LocalDate

interface ChannelBalanceAdjustmentRepository extends CrudRepository<ChannelBalanceAdjustment, Long>{

    ChannelBalanceAdjustment findByTypeAndChannelAndValueDate(ChannelBalanceAdjustment.Type type, Channel channel, LocalDate valueDate)
}

申请class:

package com.package

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

@SpringBootApplication
class ProcessPendingDividendsApplication {

    static void main(String[] args) {
        SpringApplication.run(ProcessPendingDividendsApplication, args)
    }

}

从使用存储库的地方摘录:

package com.package.service
// imports

@Service
@Slf4j
class ProcessingPendingDividendsService {


    @Autowired
    ChannelBalanceAdjustmentRepository channelBalanceAdjustmentRepository

它用于 Spock 测试我是 运行:

@SpringBootTest
@Transactional
@AutoConfigureTestDatabase
@AutoConfigureTestEntityManager
class CashReinvestDividendSpec extends Specification{

    @Autowired
    CashReinvestDividendRepository cashReinvestDividendRepository

    @Autowired
    TestEntityManager entityManager

    def "test" () {

我可以添加任何其他需要的东西,但不想用不相关的东西把问题搞得一团糟。

纳什 您是否在分享实际的 code/error 片段 很少观察

  1. 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有合格的 bean 类型 'com.package.repository.ChannelBalanceAdjustmentRepository' 你怎么能有一个包含包的包名..它是一个 reserverd 关键字,将不会被允许。
  2. 您的存储库位于不同的包中并且没有 public 关键字如何在服务包中访问它。

仔细检查您的实体。我以前见过这个,jpa 存储库必须引用正确配置的实体,如果实体对象缺少 @Entity 或其中一列配置不正确,它会抛出红色鲱鱼错误。