Атрибут сущности имеет ограничение Unique
@Column(name = "EMAIL", unique = true)
protected String email;
С веб-клиента создается запись, нарушающая это ограничение. При попытке коммита клиенту бросается исключение PSQLException:
PSQLException: ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "blablabla_uniq_email"
Подробности: Ключ "(email)=(q@qq.ru)" уже существует.
Требуется обработать это исключение.
Варианта вижу два:
- В контроллере экрана в методе preCommit проверять наличие повторов поиском по коллекции либо прямым JBQL-запросом, и если повторы найдены - прерывать коммит с соответсвующим сообщением
- поймать где-то исключение PSQLException и обработать, отобразив "человеческое" сообщение об ошибке
Первый вариант мне кажется костылем. Второй вариант - не знаю как реализовать.
Подскажите как это делается правильно.