我正在编写一个Spring应用程序,似乎当我遇到数据库错误时,有时会抛出Hibernate的ConstraintViolationException
,有时抛出Spring DataIntegrityViolationException
。是否有理由抛出而不是另一个?他们的意思是不同的吗?
答案 0 :(得分:5)
如果您通过HibernateTemplate
执行Hibernate调用,那么Spring会将任何Hibernate异常(例如ConstraintViolationException
)转换为Spring异常层次结构(例如DataIntegrityViolationException
)。如果您不使用HibernateTemplate
,那么本机Hibernate异常将会通过。两者都是RuntimeExceptions
,因此不需要显式异常处理,因此您将看到哪一个并不总是很明显。