在Spring中将PersistenceException转换为DataAccessException
我正在尝试在Spring + JPA + Hibernate环境中处理唯一的键约束违规。
我使用PersistenceExceptionTranslationPostProcessor
将PersistenceException
转换为DataAccessException
。 当存在唯一的键约束违规时,我会期望抛出DuplicateKeyException
或DataIntegrityViolationException
,但我得到的是一个包装PersistenceException
的JpaSystemException
。
使用DataAccessException
层次结构的重点是,它的细粒度足以不必查找特定于供应商的错误代码吗?
我如何让Spring将PersistenceException
转换为更具体的DataAccessException
?
编辑:我注意到DataAccessUtils.translateIfNecessary()中的this.jpaDialect为null。 我需要配置一些设置来将this.jpaDialect设置为HibernateJpaDialect吗?
谢谢!
显然你没有设置jpaDialect
。 对于Hibernate,它应该如下所示: