1
resposta

Consulta usando anotação @Query não funciona

Olá, professor! Estou tentando fazer uma função usando a anotação @Query que busque um usuário que realizou determinada compra, porém está dando o seguinte erro:

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2023-09-23T09:43:43.648-03:00 ERROR 17320 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userRepository': Error creating bean with name 'userRepository' defined in com.desafiobackend.desafiobackend.repository.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract com.desafiobackend.desafiobackend.domain.User com.desafiobackend.desafiobackend.repository.UserRepository.findProductUser(java.lang.Long); Reason: Validation failed for query for method public abstract com.desafiobackend.desafiobackend.domain.User com.desafiobackend.desafiobackend.repository.UserRepository.findProductUser(java.lang.Long) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:767) ~[spring-beans-6.0.12.jar:6.0.12] ...

Classe UserUserControllerShopServiceUserRepositoryModo que a tabela user foi criada

Note que a query nem está fazendo de fato o que eu queria, que é buscar a compra de um usuário, pois creio que o certo seria eu fazer a busca em outra tabela (criada pela relação que existe entre as tabelas User e Product), porém testei essa query mais fácil para ver se funcionava, porém sem sucesso.

1 resposta

Oi!

Acho que o erro na sua query é que está faltando a definição do alias u.

A primeira linha da consulta deveria ser: select u from user u