在JPA + Spring中发生异常后回滚事务

我在下面使用HIbernate和Spring和JPA。当引发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.我需要在异常之后回滚事务,但是当我捕获到异常并且不想重新抛出该异常时,如何回滚它呢?

回答:

似乎没有办法回退由Spring

ORM管理的失败事务。问题中显示的代码是服务类。将其持久性例程提取到单独的DAO类并具有服务类句柄可以解决问题PersistenceExceptions

以上是 在JPA + Spring中发生异常后回滚事务 的全部内容, 来源链接: utcz.com/qa/411559.html

回到顶部