Я пытаюсь определить, какое поле вызвало исключение ConstraintViolationException в java. У меня есть два уникальных поля, имя пользователя и адрес электронной почты, и когда я поймаю исключение, я хочу вернуть правильное поле перечисления.Как определить, какое поле вызвало исключение
USER_ALREADY_REGISTERED("User Already Registered"),
EMAIL_ALREADY_REGISTERED("Email Address Already In Use"),
Каков правильный способ сделать это?
Один из подходов, который я могу придумать, - это захватить сообщение из исключения и посмотреть, содержит ли оно имя поля, если оно используется, затем использовать одно перечисление, иначе вернуть другое, однако это кажется немного ошибочным - есть ли лучше путь?
Благодаря
редактировать:
}catch(ConstraintViolationException e){
if(e.getConstraintName() != null){
if(e.getConstraintName().toLowerCase().contains("email")){
return RegistrationStatus.EMAIL_ALREADY_REGISTERED;
}
}
return RegistrationStatus.USER_ALREADY_REGISTERED;
Я использую hibernate, поэтому я мог бы сделать что-то подобное выше, поскольку исключение ConstraintVioilationException в спящем режиме не имеет метода, который вы описываете (см. Op для моего потенциального решения?) – Biscuit128