我正在使用带有单个持久性单元的 OpenJPA 2.0。
在我的 persistence.xml 中,我选择了transaction-type="RESOURCE_LOCAL"
手动配置和管理事务。
现在,在下面的代码中,如果 aPersistenceException
被抛出(并被捕获),我应该如何清理事务?
try {
entityManager.getTransaction().begin();
MyClassPO myClassPO = (MyClassPO) entityManager
.createQuery("select bn from myClassPO bn where bn.xxx = :xxx")
.setParameter("xxx", xxx)
.getSingleResult(); // NoResultException gets thrown here
... do some more stuff ...
entityManager.getTransaction().commit();
} catch (PersistenceException e) {
// what should I do with the open transaction here ??
logger.error(e);
throw new MyOtherException(e);
}
我知道事务没有自动清理,因为下次我运行相同的操作时会收到错误消息This operation cannot be performed while a Transaction is active.
是不是就这么简单的把方块放进entityManager.getTransaction().rollback();
去?catch