Обработка исключений, нарушающих уникальные ограничения

Фреймворк Jmix позволяет настроить сообщение, отображаемое обработчиком исключений при ошибках нарушения ограничений БД.

Кастомное сообщение должно быть указано в пакете сообщений. Ключ сообщения должен содержать префикс databaseUniqueConstraintViolation плюс уникальное имя индекса базы данных в верхнем регистре. Например:

databaseUniqueConstraintViolation.UC_UIEX1_CUSTOMER_EMAIL=A customer with \
  the same email already exists

Итак, уведомление по умолчанию выглядит следующим образом:

with default exception message

После добавления кастомного ключа сообщения получается следующее уведомление:

with custom exception message

Обнаружение ошибок нарушения ограничений БД выполняется классом UniqueConstraintViolationHandler, который определяет тип исключения путем поиска специальной маркерной строки в сообщениях всех исключений в цепочке.

Стандратный обработчик также можно полностью заменить, предоставив свой собственный обработчик исключений с более высоким приоритетом, например, @Order(JmixOrder.HIGHEST_PRECEDENCE - 10).