如何正确回滚JTA事务?

时间:2013-02-04 11:51:23

标签: java java-ee jpa jta

回滚容器管理的JTA事务的事务的正确方式是什么?

我明白这一点:EJBException when calling entityManager.getTransaction() 我无法获得事务实例。 我读了一个解决方案here,但我不确定这是否正确。

我也知道,如果我抛出异常,事务将被回滚。

但我的问题是:如果我想(必须)使用托管EntityManager的容器,那么在其中回滚事务的正确方法是什么?

1 个答案:

答案 0 :(得分:7)

Code Ranch上的答案是对的,您必须使用SessionContext

@Resource
private SessionContext ctx;

//and then in method
if(fail) {
    ctx.setRollBackOnly(); 
}

另见article