How do I resolve error "No bean of type [io.micronaut.data.operations.PrimaryRepositoryOperations] exists" in micronaut application?

10,252

Solution 1

I had the same error and it was caused by incorrect package name in the entity-scan property.

Solution 2

Okay, one more answer which maybe helpful in this particular case that I was facing. So I had a service which was not being injected after I applied the validation annotations. So, the fix as clearly mentioned on the docs page is:

https://docs.micronaut.io/snapshot/guide/index.html#datavalidation

For Gradle

implementation("io.micronaut.beanvalidation:micronaut-hibernate-validator")

For Maven:

<dependency>
    <groupId>io.micronaut.beanvalidation</groupId>
    <artifactId>micronaut-hibernate-validator</artifactId>
</dependency>

Solution 3

The problem was missing/conflicting dependencies in my pom file. To resolve I added this dependency:

    <dependency>
      <groupId>io.micronaut.configuration</groupId>
      <artifactId>micronaut-jdbc-tomcat</artifactId>
      <scope>runtime</scope>
    </dependency>

And removed this one:

    <dependency>
      <groupId>io.micronaut.configuration</groupId>
      <artifactId>micronaut-hibernate-jpa</artifactId>
      <scope>compile</scope>
    </dependency>
Share:
10,252
John Boone
Author by

John Boone

Updated on July 02, 2022

Comments

  • John Boone
    John Boone almost 2 years

    I am evaluating micronaut and am attempting to port a small application as a pilot project. I have run into a snag dealing with datasources/repositories.

    I have the following application.yml:

    micronaut:
      application:
        name: bling-application
    
    datasources:
      default:
        url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
        driverClassName: org.h2.Driver
        username: sa
        password: ''
        schema-generate: CREATE_DROP
        dialect: H2
    
    jpa:
      default:
        entity-scan:
          packages: 'my.package.entity'
        properties:
          hibernate:
            bytecode:
              provider: none
            hbm2ddl:
              auto: update
    

    I have defined a simple Repository interface as follows:

    package my.package.entity.repository;
    
    import my.package.entity.Company;
    import io.micronaut.data.annotation.Repository;
    import io.micronaut.data.repository.CrudRepository;
    
    @Repository
    public interface CompanyRepository extends CrudRepository<Company, Long> {
    
        Company findByName(String name);
    
    }
    

    When I run the application in test mode (./mvnw compile exec:exec) it starts without error. However, when I request an end-point that exercises the CompanyRepository I receive the following exception:

    14:38:37.307 [pool-1-thread-4] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: No backing RepositoryOperations configured for repository. Check your configuration and try again
    io.micronaut.context.exceptions.ConfigurationException: No backing RepositoryOperations configured for repository. Check your configuration and try again
            at io.micronaut.data.intercept.DataIntroductionAdvice.findInterceptor(DataIntroductionAdvice.java:109)
            at io.micronaut.data.intercept.DataIntroductionAdvice.intercept(DataIntroductionAdvice.java:77)
            at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:69)
            at my.package.entity.repository.CompanyRepository$Intercepted.findByName(Unknown Source)
            at my.package.bling.BlingExportBean.getProductionCompanyByName(BlingExportBean.java:519)
            at my.package.bling.BlingExportBean.doExport(BlingExportBean.java:167)
            at my.package.bling.BlingExportBean.export(BlingExportBean.java:112)
            at my.package.bling.BlingExportResource.export(BlingExportResource.java:20)
            at my.package.bling.$BlingExportResourceDefinition$$exec1.invokeInternal(Unknown Source)
            at io.micronaut.context.AbstractExecutableMethod.invoke(AbstractExecutableMethod.java:147)
            at io.micronaut.context.DefaultBeanContext$BeanExecutionHandle.invoke(DefaultBeanContext.java:2844)
            at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:235)
            at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:122)
            at io.micronaut.http.server.netty.RoutingInBoundHandler.lambda$buildResultEmitter$17(RoutingInBoundHandler.java:1400)
            at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:71)
            at io.reactivex.Flowable.subscribe(Flowable.java:14918)
            at io.reactivex.Flowable.subscribe(Flowable.java:14865)
            at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
            at io.reactivex.Flowable.subscribe(Flowable.java:14918)
            at io.reactivex.internal.operators.flowable.FlowableMap.subscribeActual(FlowableMap.java:37)
            at io.reactivex.Flowable.subscribe(Flowable.java:14918)
            at io.reactivex.Flowable.subscribe(Flowable.java:14865)
            at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
            at io.reactivex.Flowable.subscribe(Flowable.java:14918)
            at io.reactivex.internal.operators.flowable.FlowableSwitchIfEmpty.subscribeActual(FlowableSwitchIfEmpty.java:32)
            at io.reactivex.Flowable.subscribe(Flowable.java:14918)
            at io.reactivex.Flowable.subscribe(Flowable.java:14865)
            at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
            at io.reactivex.Flowable.subscribe(Flowable.java:14918)
            at io.reactivex.Flowable.subscribe(Flowable.java:14868)
            at io.micronaut.http.context.ServerRequestTracingPublisher.lambda$subscribe$0(ServerRequestTracingPublisher.java:52)
            at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:52)
            at io.micronaut.http.context.ServerRequestTracingPublisher.subscribe(ServerRequestTracingPublisher.java:52)
            at io.reactivex.internal.operators.flowable.FlowableFromPublisher.subscribeActual(FlowableFromPublisher.java:29)
            at io.reactivex.Flowable.subscribe(Flowable.java:14918)
            at io.reactivex.Flowable.subscribe(Flowable.java:14865)
            at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
            at io.reactivex.Flowable.subscribe(Flowable.java:14918)
            at io.reactivex.Flowable.subscribe(Flowable.java:14865)
            at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
            at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288)
            at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
            at java.lang.Thread.run(Thread.java:748)
    Caused by: io.micronaut.context.exceptions.NoSuchBeanException: No bean of type [io.micronaut.data.operations.PrimaryRepositoryOperations] exists. Make sure the bean is not disabled by bean requirements (enable trace logging for 'io.micronaut.context.condition' to check) and if the bean is enabled then ensure the class is declared a bean and annotation processing is enabled (for Java and Kotlin the 'micronaut-inject-java' dependency should be configured as an annotation processor).
            at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:1974)
            at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:610)
            at io.micronaut.data.intercept.DataIntroductionAdvice.findInterceptor(DataIntroductionAdvice.java:106)
            ... 44 common frames omitted
    
    

    The stack trace says that something is missing from the application context (presumably PrimaryRepositoryOperations) but it is not clear to me what that is. How can I correct this error? I am new to micronaut and presume that I am missing some crucial dependency or configuration.

    For additional context my pom.xml:

    <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>bling.application</groupId>
      <artifactId>bling-application</artifactId>
      <version>0.1</version>
      <properties>
        <micronaut.version>1.2.9</micronaut.version>
        <jdk.version>1.8</jdk.version>
        <maven.compiler.target>${jdk.version}</maven.compiler.target>
        <maven.compiler.source>${jdk.version}</maven.compiler.source>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <exec.mainClass>my.package.bling.Application</exec.mainClass>
        <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
        <maven-failsafe-plugin.version>2.22.2</maven-failsafe-plugin.version>
        <mans-core.version>1.0.16-SNAPSHOT</mans-core.version>
        <okhttp.version>3.11.0</okhttp.version>
      </properties>
      <repositories>
        <repository>
          <id>jcenter.bintray.com</id>
          <url>https://jcenter.bintray.com</url>
        </repository>
      </repositories>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>io.micronaut</groupId>
            <artifactId>micronaut-bom</artifactId>
            <version>${micronaut.version}</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.h2database</groupId>
          <artifactId>h2</artifactId>
        </dependency>
        <dependency>
          <groupId>com.squareup.okhttp3</groupId>
          <artifactId>okhttp</artifactId>
          <version>${okhttp.version}</version>
        </dependency>
        <dependency>
          <groupId>io.micronaut</groupId>
          <artifactId>micronaut-inject</artifactId>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>io.micronaut</groupId>
          <artifactId>micronaut-validation</artifactId>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>io.micronaut</groupId>
          <artifactId>micronaut-runtime</artifactId>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>io.micronaut</groupId>
          <artifactId>micronaut-http-server-netty</artifactId>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>io.micronaut</groupId>
          <artifactId>micronaut-http-client</artifactId>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>io.micronaut.data</groupId>
          <artifactId>micronaut-data-hibernate-jpa</artifactId>
          <version>1.0.0.M5</version>
        </dependency>
        <dependency>
          <groupId>io.micronaut.configuration</groupId>
          <artifactId>micronaut-hibernate-jpa</artifactId>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>1.2.3</version>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-engine</artifactId>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>io.micronaut.test</groupId>
          <artifactId>micronaut-test-junit5</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                      <mainClass>${exec.mainClass}</mainClass>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <configuration>
              <executable>java</executable>
              <arguments>
                <argument>-classpath</argument>
                <classpath/>
                <argument>-noverify</argument>
                <argument>-XX:TieredStopAtLevel=1</argument>
                <argument>-Dcom.sun.management.jmxremote</argument>
                <argument>${exec.mainClass}</argument>
              </arguments>
            </configuration>
          </plugin>
        </plugins>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>${maven-surefire-plugin.version}</version>
              <configuration>
                <detail>true</detail>
                <includes>
                  <include>%regex[.*]</include>
                </includes>
              </configuration>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-failsafe-plugin</artifactId>
              <version>${maven-failsafe-plugin.version}</version>
              <executions>
                <execution>
                  <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.7.0</version>
              <configuration>
                <compilerArgs>
                  <arg>-parameters</arg>
                </compilerArgs>
                <annotationProcessorPaths>
                  <path>
                    <groupId>io.micronaut</groupId>
                    <artifactId>micronaut-inject-java</artifactId>
                    <version>1.2.9</version>
                  </path>
                  <path>
                    <groupId>io.micronaut</groupId>
                    <artifactId>micronaut-validation</artifactId>
                    <version>1.2.9</version>
                  </path>
                  <path>
                    <groupId>io.micronaut.data</groupId>
                    <artifactId>micronaut-data-processor</artifactId>
                    <version>1.0.0.M5</version>
                  </path>
                </annotationProcessorPaths>
              </configuration>
              <executions>
                <execution>
                  <id>test-compile</id>
                  <goals>
                    <goal>testCompile</goal>
                  </goals>
                  <configuration>
                    <compilerArgs>
                      <arg>-parameters</arg>
                    </compilerArgs>
                    <annotationProcessorPaths>
                      <path>
                        <groupId>io.micronaut</groupId>
                        <artifactId>micronaut-inject-java</artifactId>
                        <version>1.2.9</version>
                      </path>
                      <path>
                        <groupId>io.micronaut</groupId>
                        <artifactId>micronaut-validation</artifactId>
                        <version>1.2.9</version>
                      </path>
                      <path>
                        <groupId>io.micronaut.data</groupId>
                        <artifactId>micronaut-data-processor</artifactId>
                        <version>1.0.0.M5</version>
                      </path>
                    </annotationProcessorPaths>
                  </configuration>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>