我正在使用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.
我知道当出现异常时需要回滚事务,但是如果我已经捕获了异常并且不想重新抛出它,那么如何回滚呢?