3
respostas

[Dúvida] Error creating bean with name 'consultaController':

Bom dia! Vi alguns erros referentes a esse problema no Fórum, porem nada solucionou o meu caso. Ao gerar a Query conforme o video apresenta erro de Sintaxe devido ao nome diferente das tabelas "video = Medico" "MySql = Medicos", após o ajuste da Query apresenta o seguinte erro:

"Error creating bean with name 'consultaController': Unsatisfied dependency expressed through field 'agenda': Error creating bean with name 'agendaDeConsultas': Unsatisfied dependency expressed through field 'medicoRepository': Error creating bean with name 'medicoRepository' defined in med.voll.api.domain.medico.MedicoRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.lang.Boolean med.voll.api.domain.medico.MedicoRepository.findAtivoById(java.lang.Long); Reason: Validation failed for query for method public abstract java.lang.Boolean med.voll.api.domain.medico.MedicoRepository.findAtivoById(java.lang.Long)"

public interface MedicoRepository extends JpaRepository<Medico, Long>{

Page<Medico> findAllByAtivoTrue(Pageable paginacao);

@Query("""
        select m from Medicos m
        where
        m.ativo = 1
        and
        m.especialidade = :especialidade
        and
        m.id not in (
            select c.medico.id from Consultas c
            where
            c.data = :data
        )
        order by rand()
        limit 1
        """)
Medico escolherMedicoAleatorioLivreNaData(Especialidade especialidade, LocalDateTime data);

@Query("""
        select m.ativo
        from Medicos m
        where
        m.id = :id
        """)
Boolean findAtivoById(Long id);

}

3 respostas

Oi!

O problema está nessa query:

@Query("""
        select m.ativo
        from Medicos m
        where
        m.id = :id
        """)
Boolean findAtivoById(Long id);

Deveria ser:

@Query("""
        select m.ativo
        from Medico m
        where
        m.id = :id
        """)

Olá, Rodrigo! Mesmo deixando as Querys iguais as da aula o erro persistia, porém conseguir solucionar o problema alterando a versão do Spring Boot no POM.XML:

Estava na versão: org.springframework.boot spring-boot-starter-parent 3.1.2

Alterei para: org.springframework.boot spring-boot-starter-parent 3.0.9

Fica como solução para casos futuros, obrigado pelo retorno!

Nas novas versões do Spring Boot precisa alterar esse trecho da query do método escolherMedicoAleatorioLivreNaData:

 m.ativo = 1

para:

m.ativo = true

Fazendo essa mudança não ocorre mais o erro ao iniciar a aplicação.