Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception when using a custom interface in Spring Data JPA #5317

Closed
hantsy opened this issue Nov 8, 2019 · 4 comments · Fixed by #5347
Closed

Exception when using a custom interface in Spring Data JPA #5317

hantsy opened this issue Nov 8, 2019 · 4 comments · Fixed by #5347
Labels
area/spring Issues relating to the Spring integration kind/bug Something isn't working
Milestone

Comments

@hantsy
Copy link
Contributor

hantsy commented Nov 8, 2019

Mentioned in #4104, the issue is still in 1.0.0.CR1.

Repository codes https://github.com/hantsy/quarkus-sandbox/blob/master/spring-post-service/src/main/java/com/example/PostRepository.java#L6

12:31:52,971 ERROR [io.qua.dev.DevModeMain] Failed to start Quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
        [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.AmbiguousResolutionException: Ambiguous dependencies for type com.example.PostRepositoryImpl and qualifiers [@Default]
        - java member: com.example.PostRepositoryImpl#customImplClass1
        - declared on CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        - available beans:
                - CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
                - CLASS bean [types=[com.example.PostRepositoryImpl, java.lang.Object, com.example.PostRepositoryCustom], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:850)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:220)
        at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
        at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:251)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:941)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
        at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
        at java.base/java.lang.Thread.run(Thread.java:834)
        at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.enterprise.inject.AmbiguousResolutionException: Ambiguous dependencies for type com.example.PostRepositoryImpl and qualifiers [@Default]
        - java member: com.example.PostRepositoryImpl#customImplClass1
        - declared on CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        - available beans:
                - CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
                - CLASS bean [types=[com.example.PostRepositoryImpl, java.lang.Object, com.example.PostRepositoryCustom], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:487)
        at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:404)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:212)
        ... 14 more

        at io.quarkus.runner.RuntimeRunner.run(RuntimeRunner.java:157)
        at io.quarkus.dev.DevModeMain.doStart(DevModeMain.java:177)
        at io.quarkus.dev.DevModeMain.start(DevModeMain.java:95)
        at io.quarkus.dev.DevModeMain.main(DevModeMain.java:66)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
        [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.AmbiguousResolutionException: Ambiguous dependencies for type com.example.PostRepositoryImpl and qualifiers [@Default]
        - java member: com.example.PostRepositoryImpl#customImplClass1
        - declared on CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        - available beans:
                - CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
                - CLASS bean [types=[com.example.PostRepositoryImpl, java.lang.Object, com.example.PostRepositoryCustom], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:850)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:220)
        at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
        at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:251)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:941)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
        at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
        at java.base/java.lang.Thread.run(Thread.java:834)
        at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.enterprise.inject.AmbiguousResolutionException: Ambiguous dependencies for type com.example.PostRepositoryImpl and qualifiers [@Default]
        - java member: com.example.PostRepositoryImpl#customImplClass1
        - declared on CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        - available beans:
                - CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
                - CLASS bean [types=[com.example.PostRepositoryImpl, java.lang.Object, com.example.PostRepositoryCustom], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:487)
        at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:404)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:212)
        ... 14 more

        at io.quarkus.builder.Execution.run(Execution.java:108)
        at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:121)
        at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:130)
        at io.quarkus.runner.RuntimeRunner.run(RuntimeRunner.java:111)
        ... 3 more
Caused by: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.AmbiguousResolutionException: Ambiguous dependencies for type com.example.PostRepositoryImpl and qualifiers [@Default]
        - java member: com.example.PostRepositoryImpl#customImplClass1
        - declared on CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        - available beans:
                - CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
                - CLASS bean [types=[com.example.PostRepositoryImpl, java.lang.Object, com.example.PostRepositoryCustom], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:850)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:220)
        at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
        at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:251)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:941)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
        at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
        at java.base/java.lang.Thread.run(Thread.java:834)
        at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.enterprise.inject.AmbiguousResolutionException: Ambiguous dependencies for type com.example.PostRepositoryImpl and qualifiers [@Default]
        - java member: com.example.PostRepositoryImpl#customImplClass1
        - declared on CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        - available beans:
                - CLASS bean [types=[com.example.PostRepositoryImpl, org.springframework.data.jpa.repository.JpaRepository<com.example.Post, java.lang.String>, org.springframework.data.repository.query.QueryByExampleExecutor<com.example.Post>, org.springframework.data.repository.CrudRepository<com.example.Post, java.lang.String>, com.example.PostRepository, org.springframework.data.repository.Repository<com.example.Post, java.lang.String>, java.lang.Object, com.example.PostRepositoryCustom, org.springframework.data.repository.PagingAndSortingRepository<com.example.Post, java.lang.String>], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
                - CLASS bean [types=[com.example.PostRepositoryImpl, java.lang.Object, com.example.PostRepositoryCustom], qualifiers=[@Default, @Any], target=com.example.PostRepositoryImpl]
        at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:487)
        at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:404)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:212)
        ... 14 more
@hantsy hantsy added the kind/bug Something isn't working label Nov 8, 2019
@geoand geoand added the area/spring Issues relating to the Spring integration label Nov 9, 2019
@geoand
Copy link
Contributor

geoand commented Nov 9, 2019

Thanks for reporting!

@geoand
Copy link
Contributor

geoand commented Nov 9, 2019

#5347 takes care of the issue. I verified with your reproducer (which I should add, was very useful)

geoand added a commit that referenced this issue Nov 9, 2019
Ensure that the name of the generated Spring data repositories is unique
@hantsy
Copy link
Contributor Author

hantsy commented Nov 10, 2019

Great work, if the snapshot is availble, I can help to verify it in my sample.

@geoand
Copy link
Contributor

geoand commented Nov 10, 2019

I am afraid that you will have to build Quarkus locally to verify it.

We do have snapshots somewhere, but I can't remember where 🙃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/spring Issues relating to the Spring integration kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants