当违反唯一约束时,将javax.persistence.RollbackException
引发a。但是可能有多种原因抛出异常RollbackException
。我如何才能发现违反了唯一约束?
try {
repository.save(article);
}
catch(javax.persistence.RollbackException e) {
// how to find out the reason for the rollback exception?
}
我如何才能发现违反了唯一约束?
异常是链接在一起的,您必须getCause()
递归调用以获取提供程序特定的异常(并可能转到SQLException
),以将其转换为应用程序可以很好地为用户处理的内容。下面将打印异常链:
for (t = e.getCause(); t != null; t = t.getCause()) {
logger.debug("Exception:" + t);
}
对于异常处理和“翻译”,您可以执行类似于Spring的操作(请参阅各种JpaDialect
类,例如,HibernateJpaDialect
以获取想法)。
所有这些都不是很好,此代码将不可移植,并且查找导致冲突的属性不是一件容易的事。这某种程度上证实了JPA中没有优雅而可移植的方法来处理约束违规。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句