Hola a todos, tengo este problema cuando ejecuto el programa en el minuto 3:22
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'consultaController': Unsatisfied dependency expressed through field 'service': Error creating bean with name 'agendaDeConsultaService': 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 med.voll.api.domain.medico.Medico med.voll.api.domain.medico.MedicoRepository.seleccionarMedicoConEspecialidadEnFecha(med.voll.api.domain.medico.Especialidad,java.time.LocalDateTime); **Reason: Validation failed for query for method public abstract med.voll.api.domain.medico.Medico med.voll.api.domain.medico.MedicoRepository.seleccionarMedicoConEspecialidadEnFecha(med.voll.api.domain.medico.Especialidad,java.time.LocalDateTime)**
Me di cuenta que el error de alguna forma se produce en el Repositorio Medico, en su método Especialidad
Lo que tambien produce este mismom error 3 veces aprox:
Caused by: java.lang.IllegalArgumentException: org.hibernate.query.sqm.InterpretationException: Error interpreting query [select m from Medico m
where m.activo= 1
and
m.especialidad=:especialidad
and
m.id not in(
select c.medico.id from Consulta c
where
c.fecha=:fecha
)
order by rand()
limit 1
]; this may indicate a semantic (user query) problem or a bug in the parser [select m from Medico m
where m.activo= 1
and
m.especialidad=:especialidad
and
m.id not in(
select c.medico.id from Consulta c
where
c.fecha=:fecha
)
order by rand()
limit 1
]
Y como ultimo te lanza este error relacionado al activo de medico, un error de comparar un Boolean con un Int:
Caused by: java.lang.IllegalArgumentException: Can't compare test expression of type [BasicSqmPathSource(activo : Boolean)] with element of type [basicType@15(java.lang.Integer,4)]
Este es mi metodo en MedicoRepository, mismo que esta en haga lo mismo en clase :
@Query("""
select m from Medico m
where m.activo= 1
and
m.especialidad=:especialidad
and
m.id not in(
select c.medico.id from Consulta c
where
c.fecha=:fecha
)
order by rand()
limit 1
""")
Medico seleccionarMedicoConEspecialidadEnFecha(Especialidad especialidad, LocalDateTime fecha);
Los detalles de mi proyecto:
- Si tienen las anotaciones el MedicoRepository y otros
- El atributo activo es Boolan en la base de datos como en la Clase Medico, solo en la query se compara como si fuera int
Ojala me puedan ayudar