Я пытаюсь обработать уникальные нарушения ключевых ограничений в среде Spring + JPA + Hibernate.
Я использую PersistenceExceptionTranslationPostProcessor
для перевода PersistenceException
в DataAccessException
. Когда есть нарушение уникального ключевого ограничения, я бы ожидал бросок DuplicateKeyException
или DataIntegrityViolationException
, но все, что я получаю, это JpaSystemException
, который оборачивает PersistenceException
.
Не является ли смысл использования иерархии DataAccessException
в том, что она достаточно детализирована, чтобы не искать специфический для поставщика код ошибки?
Как мне заставить Spring перевести PersistenceException
на более конкретный DataAccessException
?
РЕДАКТИРОВАТЬ: я заметил, что this.jpaDialect в DataAccessUtils.translateIfNeeded () является нулевым. Есть ли какие-то настройки, которые мне нужно настроить, чтобы установить this.jpaDialect в HibernateJpaDialect?
Спасибо!