Olá, Michael!
Nesse caso, você terá que validar se a entidade não foi encontrada, lançar uma exceção e no RestControllerAdvice, apontar para esse exceção lançada.
Segue exemplo:
Método que chama o repository
final MedicoEntity medico = repository.findByCrm(crm);
if (medico == null) {
throw new EntityNotFoundException();
}
RestControllerAdvice
@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity tratarErro404() {
return ResponseEntity.notFound().build();
}
Note que a exceção definida no ExceptionHandler
é a mesma lançada quando não encontrar a entidade.
Com isso, caso não encontre a entidade requisitada, será lançada uma exceção EntityNotFoundException
e a mesma será tratada retornando um código 404 na requisição HTTP.
OBS:
Você pode validar se a entidade foi encontrada ou não da forma que achar melhor. No exemplo, estamos validando se o retorno da consulta é nulo, porém você pode retornar um Optional e validar a partir dele, fica a seu critério.
Sobre a exceção lançada, você pode escolher qualquer exceção que quiser, ou até mesmo criar uma nova. Por boas práticas, apenas cuide se a exceção e a mensagem exibida fazem sentido com o contexto da situação.