Как получить constraintName для DataIntegrityViolationException, используя базу данных H2? - PullRequest
0 голосов
/ 02 октября 2018

Я использую PostgreSQL на производстве и H2 на разработке.

Я обрабатываю DataIntegrityViolationException в SpringBoot ControllerAdvice и хочу получить имя ограничения, которое приводит к этому исключению.

Моя таблица определена так:

@Table(name = "user", uniqueConstraints = {
    @UniqueConstraint(name = "users_unique_email_idx", columnNames = {"email"})
})
class User ...

Когда я использую PostgreSQL, он работает отлично.Я получаю причину исключения, которая является ConstraintViolationException, а затем получаю имя ограничения.Примерно так:

((ConstraintViolationException)ex.getCause()).getConstraintName()

Но, используя базу данных H2, я не могу найти способ получить constraintName.DataIntegrityViolationException не содержит ConstraintViolationException или имя-ограничения.С H2 сообщение об ошибке пустое:

DataIntegrityViolationException:
  could not execute statement; SQL [n/a]; constraint [null];
Caused by:
  JdbcSQLException: Violation dindex unique ou clé primaire: {0}
  Unique index or primary key violation: {0}; SQL statement:

Примечание: в моей таблице H2 INFORMATION_SCHEMA.CONSTRAINTS мое ограничение на поле электронной почты существует и имеет хорошее имя (users_unique_email_idx)

ограничение базы данных H2?
Как включить имя ограничения в H2?

Спасибо!

...