Me podrian ayudar a ver donde esta mi error , me sale lo siguiente: Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2023-09-29T01:09:10.238-05:00 ERROR 7996 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed
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.seleccionMedicoConEspecialidadenFecha(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.seleccionMedicoConEspecialidadenFecha(med.voll.api.domain.medico.Especialidad,java.time.LocalDateTime) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: 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.seleccionMedicoConEspecialidadenFecha(med.voll.api.domain.medico.Especialidad,java.time.LocalDateTime); Reason: Validation failed for query for method public abstract med.voll.api.domain.medico.Medico
package med.voll.api.domain.medico;
.....
import java.time.LocalDateTime;
@Repository
public interface MedicoRepository extends JpaRepository<Medico, Long> {
Page<Medico> findByActivoTrue(Pageable paginacion);
@Query("""
select m from Medico m
where m.activo = true
and
m.especialidad =: especialidad
and
m.id not in(
select c.medico.id from Consulta c
where
c.data =: fecha
)
order by rand()
limit 1;
""")
Medico seleccionMedicoConEspecialidadenFecha(Especialidad especialidad, LocalDateTime fecha);
@Query("""select m.activo from Medico m where m.id =: id; """)
Boolean findActivoById(Long id);
}
package med.voll.api.domain.consulta;
@Repository
public interface ConsultaRepository extends JpaRepository<Consulta, Long> {
//Boolean
Boolean existsByPacienteIdAndDataBetween(Long idMedico, LocalDateTime primerHorario, LocalDateTime ultimoHorario);
Boolean existsByMedicoIdAndData(long l, LocalDateTime fecha);
}
package med.voll.api.domain.consulta;
...
import java.util.List;
@Service
public class AgendaDeConsultaService {
@Autowired
private MedicoRepository medicoRepository;
@Autowired
private ConsultaRepository consultaRepository;
@Autowired
List<ValidadorDeConsultas> validadores;
public void agendar(DatosAgendarConsulta datos){
if(!medicoRepository.findById(datos.idMedico()).isPresent()){
throw new ValidacionDeIntegridad("Este id no ha sido encontrado");
}
if(datos.idMedico() != null && !medicoRepository.existsById(datos.idMedico())){
throw new ValidacionDeIntegridad("Este Id para el medico no fue encontrado");
}
validadores.forEach(v->v.validar(datos));
//var paciente = pacienteRepository.findById(datos.idPaciente()).get();
var medico = seleccionarmedico(datos);
if(medico==null){
throw new ValidacionDeIntegridad("no existen medicos disponibles para este horario y especialidad");
}
var consulta = new Consulta(null, medico, datos.fecha());
consultaRepository.save(consulta);
}
private Medico seleccionarmedico(DatosAgendarConsulta datos){
if(datos.idMedico() != null){
return medicoRepository.getReferenceById(datos.idMedico());
}
if(datos.especialidad() == null){
throw new ValidacionDeIntegridad("Debe seleccionarse una especialidad por medico");
}
return medicoRepository.seleccionMedicoConEspecialidadenFecha(datos.especialidad(), datos.fecha());
}
}