测试期间出现ConstraintViolationException,但运行时出现DataIntegrityViolationException

时间:2014-07-29 02:25:59

标签: hibernate

我正在测试我的内存中DBUnit应用程序以违反约束。

我在本地运行测试时看到ConstraintViolationException。但是,在实际部署和测试我的应用时,我会看到DataIntegrityViolationException

根据此answer,由于DataIntegrityViolationException而发生If you execute Hibernate calls via the HibernateTemplate错误。

我猜测(不完全知道)我的测试环境可能会发生这种情况。

如何检查我的测试设置是否使用HibernateTemplate

1 个答案:

答案 0 :(得分:0)

AFAIK,发生的事情是PersistenceExceptionTranslationPostProcessor会将测试期间抛出的ConstraintViolationException转换为Spring DataIntegrityViolationException

ConstraintViolationException将在单元测试中被捕获,因为这是通用的javax.validation / hibernate.validation异常,但是当您正确部署项目时,Spring会将其转换为它理解的异常。

(这主要是我的猜测,如果我错了,我会删除它)

要测试我是否正确,请从配置中删除PersistenceExceptionTranslationPostProcessor,然后重新部署,看看是否有ConstraintViolationException抛出