如何处理JPA唯一约束违规?

当违反唯一约束时,将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唯一约束违规? 的全部内容, 来源链接: utcz.com/qa/417763.html

回到顶部