Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] diferenca entre findById e o GetRefenceById

no video eu vi qur ultilizou o var paciente = pacienteRepository.findById(dados.idPaciente()).get(); eu nao poderia ultilizar dessa forma ?

var paciente = pacienteRepository.getReferenceById(dados.idPaciente())

e mais uma coisa qual a diferenca entre os dois metodos ?

com os dois metodos eu consigo obter a entidade do objeto ?

1 resposta
solução!

Olá, Luiz! Tudo bem? Espero que sim!

Os métodos findById e getReferenceById têm funções parecidas, mas existem algumas diferenças entre eles.

O findById é um método que busca no banco de dados a entidade com o ID especificado. Se a entidade existir, ele retorna um Optional dessa entidade. Caso contrário, retorna um Optional vazio. É por isso que você vê o método .get() sendo usado após o findById, pois é necessário extrair a entidade do Optional.

Já o método getReferenceById é um pouco diferente. Ele retorna uma referência para a entidade sem realmente buscar no banco de dados. Isso é útil quando você não precisa dos dados da entidade imediatamente, mas em algum momento no futuro. No entanto, se a entidade não existir, um erro será lançado quando você tentar acessar os dados.

No seu caso, acredito que o findById é mais apropriado, pois você precisa dos dados do paciente para criar a consulta. Se você usar o getReferenceById, pode acabar com um erro mais tarde se o paciente não existir.

Aqui está um exemplo para ilustrar a diferença:

// Com findById
var paciente = pacienteRepository.findById(dados.idPaciente());
if (paciente.isPresent()) {
    var consulta = new Consulta(null, medico, paciente.get(), dados.data());
    consultaRepository.save(consulta);
} else {
    // Trate o caso em que o paciente não existe
}

// Com getReferenceById
try {
    var paciente = pacienteRepository.getReferenceById(dados.idPaciente());
    var consulta = new Consulta(null, medico, paciente, dados.data());
    consultaRepository.save(consulta);
} catch (EntityNotFoundException e) {
    // Trate o caso em que o paciente não existe
}

Caso tenha dúvidas, fico à disposição!

Espero ter ajudado.

Abraços e bons estudos!