Eu vi a solução do outro, mas caso eu queria especificar o campo não cadastrado, eu pensei num if, mas gostaria de saber se tem outra solução melhor
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public ResponseEntity tratarErro400ParaRegistroDuplicado(SQLIntegrityConstraintViolationException ex) {
return ResponseEntity.badRequest().body(MensagemErroValidacao.registroDuplicado(ex.getLocalizedMessage()));
}
Record
private record MensagemErroValidacao(String mensagem){
public static MensagemErroValidacao registroDuplicado(String campo){
if (campo.contains("email"))
return new MensagemErroValidacao("E-mail já cadastrado");
else if (campo.contains("crm")){
return new MensagemErroValidacao("CRM já cadastrado");
}
else
return null;
}
}