Я использую 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?
Спасибо!