@Column(unique = true)
private String name;
Мне нужно написать @ExceptionHandler для обработки исключения DataIntegrityViolationException через @RestControllerAdvice, и ожидаемый результат должен быть таким.
Ожидаемый результат: - {"name": "Admin_User уже существует"}
Пробовал с кодом ниже: -
@ExceptionHandler(DataIntegrityViolationException.class)
public ResponseEntity<?> dataIntegrityException(DataIntegrityViolationException exception) {
String exceptionMessage = exception.getMostSpecificCause().getMessage();
String responseMessage = exceptionMessage.substring(exceptionMessage.indexOf("'") + 1);
responseMessage = responseMessage.substring(0, responseMessage.indexOf("'"));
HashMap<String, String> errorMap = new HashMap<>();
errorMap.put("UniqueConstraint", responseMessage + " already exists");
return new ResponseEntity<>(errorMap, HttpStatus.CONFLICT);
}
Результат: -
{"UniqueConstraint": "Asd12345 уже существует"}
Как могу ли я заменить «UniqueConstraint» на общий ключ c. Таким образом, он выбирает объект, который генерирует исключение ниже.
Может ли кто-нибудь помочь с получением ожидаемого результата как: - Ожидаемый результат: - {"name": "Asd12345 уже существует"}
Как получить имя в качестве ключа в ответе?
Исключение: -
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'simple_role1a1qa1' for key 'UK_8sewwnpamngi6b1dwaa88askk'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_181]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.46.jar:5.1.46]