我正在使用 Spring 和 JPA,下面带有 HIbernate。当抛出 PersistenceException 时,我想捕获它并返回错误消息,以便它不会传播给调用者。
@Transactional
public String save(Object bean) {
String error = null;
try {
EntityManager entityManager = getEntityManager();
for (int i = 0, n = entities.size(); i < n; i ++) {
entityManager.merge(entities.get(i));
}
}
catch (PersistenceException e) {
error = e.getMessage();
}
return error;
}
但我有一个例外说javax.persistence.RollbackException: Transaction marked as rollbackOnly.
我知道事务需要在异常后回滚,但是当我捕获异常并且不想重新抛出它时如何回滚它?
通过使用@事务性如果方法中抛出任何RuntimeException,它会自动执行回滚。您不需要手动执行此操作。您可能根本不应该捕获该异常,而是让它传递到更高级别的 ExceptionHandler,该异常处理程序向用户显示一些标准错误页面(而不是堆栈跟踪)。此外,您的方法被标记为 void 但您返回一个字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)