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

Projeto da erro ao iniciar

SEGUE O REPOSITORIO DO PROJETO= https://github.com/joaodedeusrsfilho/vollmedAPI

MENSAGEM DE ERRO ABAIXO:

Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'securityFilter': Unsatisfied dependency expressed through field 'usuarioRepository': Error creating bean with name 'usuarioRepository' defined in med.voll.API.domain.usuario.UsuarioRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'

7 respostas

Oi!

O problema deve ser nesse método da sua interface MedicoRepository:

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

Nesse trecho da query: select c.medico_id from Consulta c

Deveria ser: select c.medico.id from Consulta c pois na query se utiliza o nome dos atributos e entidades e não das tabelas e colunas no banco de dados.

Olá Rodrigo tudo bem, fiz a alteração que você falou agora aparece esse erro abaixo. você pode baixar o projeto que mandei o link e fazer a alteração que você falou e executar o projeto por gentiliza. pois eu fiz a alteração que você falou e aparece esse erro abaixo:

Database: jdbc:mysql://localhost/vollmed_api (MySQL 8.0) 2023-11-30T09:31:05.612-03:00 ERROR 14676 --- [ restartedMain] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'securityFilter': Unsatisfied dependency expressed through field 'usuarioRepository': Error creating bean with name 'usuarioRepository' defined in med.voll.API.domain.usuario.UsuarioRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'

2023-11-30T09:31:05.705-03:00 INFO 14676 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2023-11-30T09:31:05.724-03:00 WARN 14676 --- [ restartedMain] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [HikariPool-1 housekeeper] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:

Na sua migration V7 você criou duas constraints com o mesmo nome e por isso deu erro.

E no seu MedicoRepository tem um erro nesse metodo:

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

Na query o parâmetro se chama id, mas no método o parâmetro se chama idMedico. Precisa ser o mesmo nome.

solução!

Mesma coisa no PacienteRepository. Deixe o parâmetro com o mesmo nome utilizado na query

Ok alteração no V7 realizada agora apareceu esse outro erro:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consultaController': Unsatisfied dependency expressed through field 'agendaDeConsultas': 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: Using named parameters for method public abstract java.lang.Boolean med.voll.API.domain.medico.MedicoRepository.findAtivoById(java.lang.Long) but parameter 'Optional[idMedico]' not found in annotated query 'select m.ativo from Medico m where m.id = :id

Muito obrigado Rodrigo, tudo certo. apos arrumar o MedicoRepository e PacienteRepository