Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

[Bug] Erro ao compilar @Query

Pessoal, meu compilador está dando erro em interpretar a Query no DoctorRepository... Não estou conseguindo identificar qual o problema, podem me ajudar? O erro : Error creating bean with name 'appoimentController': Unsatisfied dependency expressed through field 'appoimentSchedule': Error creating bean with name 'appoimentSchedule': Unsatisfied dependency expressed through field 'doctorRepository': Error creating bean with name 'doctorRepository' defined in med.voll.api.domain.medico.DoctorRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime); Reason: Validation failed for query for method public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:713) ~[spring-beans-6.0.9.jar:6.0.9] Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

10 respostas

Oi!

Manda aqui sua classe Doctor

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A princípio tudo ok.

Faz uma alteração na query, onde está m.ativo = 1 altere para m.ativo = true e veja se resolve.

Não resolveu...

manda aqui então o log completo do erro

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Tem mais trechos que não veio. Manda em texto e somente as linha que aparecem o Caused By na stacktrace.

Opa, desculpe pela demora! Aqui está:

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appoimentSchedule': Unsatisfied dependency expressed through field 'doctorRepository': Error creating bean with name 'doctorRepository' defined in med.voll.api.domain.medico.DoctorRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime); Reason: Validation failed for query for method public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:713) ~[spring-beans-6.0.9.jar:6.0.9]

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'doctorRepository' defined in med.voll.api.domain.medico.DoctorRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime); Reason: Validation failed for query for method public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[spring-beans-6.0.9.jar:6.0.9]

Caused by: org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime); Reason: Validation failed for query for method public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime) at org.springframework.data.repository.query.QueryCreationException.create(QueryCreationException.java:101) ~[spring-data-commons-3.1.0.jar:3.1.0]

Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract med.voll.api.domain.medico.Doctor med.voll.api.domain.medico.DoctorRepository.chooseRandomDoctor(med.voll.api.domain.medico.Especialidade,java.time.LocalDateTime) at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:100) ~[spring-data-jpa-3.1.0.jar:3.1.0]

Caused by: java.lang.IllegalArgumentException: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'Doctor'

Caused by: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'Doctor'

solução!

Na sua query está: select m from Medico. Então na sua classe Doctor a anotação deveria estar @Entity(name = "Medico")

Vou chutar que você colocou em inglês: @Entity(name = "Doctor")

Então ou altere a query para ficar from Doctor ou altere na anotação @Entity de Doctor para Medico

Foi isso mesmo! Muito obrigado!!