Estou realizando a aula 3 do curso de API Spring e estou me deparando com o seguinte problema:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consultaController': Unsatisfied dependency expressed through field 'agenda': Error creating bean with name 'agendaDeConsultas': Unsatisfied dependency expressed through field 'consultaRepository': Error creating bean with name 'consultaRepository' defined in med.voll.api.domain.consulta.ConsultaRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract boolean med.voll.api.domain.consulta.ConsultaRepository.existsByMedicoAndData(java.lang.Long,java.time.LocalDateTime); Reason: Failed to create query for method public abstract boolean med.voll.api.domain.consulta.ConsultaRepository.existsByMedicoAndData(java.lang.Long,java.time.LocalDateTime); Can't compare test expression of type [Medico] with element of type [basicType@5(java.lang.Long,-5)]
Essa são minhas classes :
Medico repositorio:
public interface MedicoRepository extends JpaRepository<Medico, Long> {
Page<Medico> findAllByAtivoTrue(Pageable paginacao);
@Query(value = "SELECT * 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 RANDOM() LIMIT 1", nativeQuery = true)
Medico escolherMedicoAleatorioLivreNaData(Especialidade especialidade, LocalDateTime data);
@Query(value = "SELECT * FROM medico m" +
"WHERE m.ativo = 1" +
"WHERE m.id = :id")
Boolean findAtivoById(Long id);
}
Validador médicoComConsulta:
import org.springframework.stereotype.Component;
@Component
public class ValidadorMedicoComConsulta implements ValidadorAgendamento {
@Autowired
private ConsultaRepository consultarepository;
public void validar (AgendamentoDaConsulta dados) {
var medicoPossuiOutraConsulta = consultarepository.existsByMedicoAndData(dados.idMedico(), dados.data());
if(medicoPossuiOutraConsulta) {
throw new ValidacaoExcepetion("Médico já possui consulta!");
}
}
}