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

[Dúvida] getReferenceById não retorna Objeto

Pessoal, estou com um problema onde o método getReferenceById do Repository não retorna o objeto buscado, porém se eu troco pelo método exists é retornado true (Indicando que o JPA detectou que a entidade com o ID existe no banco de dados).. Segue abaixo o trecho do código:

Classe de Serviço

@Override
    @Transactional
    public void updateDoctor(UpdateDoctorRequestDTO updateDoctorRequestDTO) {
        Boolean exists = doctorRepository.existsById(updateDoctorRequestDTO.id());
        Doctor doctor = doctorRepository.getReferenceById(updateDoctorRequestDTO.id());
        doctor.updateDoctorInformations(updateDoctorRequestDTO);
    }

Debug: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Oi Rafael!

O objeto Doctor está sendo carregado sim. Veja no seu print do debug a variável doctor.

Obs: o getReferenceById não devolve a entidade completa, mas um proxy do hibernate e por isso os campos estão como null.

Obrigado Rodrigo! Realmente abri o método dentro da entity e de fato o objeto é instanciado.. O que ocorreu foi que dentro do método eu dupliquei os IFs para verificar se o DTO de entrada estava preenchido e dupliquei a variável do número de telefone, conforme o erro abaixo explicou.. Muito Obrigado!

org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [phone_number" of relation "doctors]