2014-09-09 2 views
0

Я пытаюсь определить, какое поле вызвало исключение 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; 

ответ

0

Используйте метод getConstraintViolations() для проверки со свойствами возникло исключение нарушения ограничений.

+0

Я использую hibernate, поэтому я мог бы сделать что-то подобное выше, поскольку исключение ConstraintVioilationException в спящем режиме не имеет метода, который вы описываете (см. Op для моего потенциального решения?) – Biscuit128

Смежные вопросы