Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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!!