Hibernate ConstraintViolationException VS DataIntegrityViolationException
我正在编写一个Spring应用程序,似乎当我遇到数据库错误时,有时会抛出Hibernate的Hibernate ConstraintViolationException VS DataIntegrityViolationException,hibernate,spring,Hibernate,Spring,我正在编写一个Spring应用程序,似乎当我遇到数据库错误时,有时会抛出Hibernate的ConstraintViolationException,有时会抛出Spring的DataIntegrityViolationException。是否有一个原因可能被抛出而不是另一个?它们的含义不同吗?如果通过HibernateTemplate执行Hibernate调用,那么Spring将把任何Hibernate异常(例如ConstraintViolationException)转换为Spring异常层次
ConstraintViolationException
,有时会抛出Spring的DataIntegrityViolationException
。是否有一个原因可能被抛出而不是另一个?它们的含义不同吗?如果通过HibernateTemplate
执行Hibernate调用,那么Spring将把任何Hibernate异常(例如ConstraintViolationException
)转换为Spring异常层次结构(例如DataIntegrityViolationException
)。如果不使用HibernateTemplate
,则本机Hibernate异常将通过。两者都是RuntimeExceptions
,因此不需要显式的异常处理,因此并不总是很明显会看到哪一个异常。我没有使用HibernateTemplate
,但只有在主键被违反时,我才会得到Spring的包装异常。其他唯一密钥冲突会导致Hibernate异常。代码是相同的——只有被违反的键的类型才重要。您是否在DAO上使用@Repository注释?