回滚容器管理的 JTA 事务的事务的正确方法是什么?
我理解这一点:调用 entityManager.getTransaction() 时出现 EJBException ,我无法获取事务实例。我在这里阅读了一个解决方案,但我不确定这是否正确。
我也知道,如果我抛出异常,事务将被回滚。
但我的问题是:如果我想(必须)使用容器管理EntityManager
,那么在其中回滚事务的正确方法是什么?
回滚容器管理的 JTA 事务的事务的正确方法是什么?
我理解这一点:调用 entityManager.getTransaction() 时出现 EJBException ,我无法获取事务实例。我在这里阅读了一个解决方案,但我不确定这是否正确。
我也知道,如果我抛出异常,事务将被回滚。
但我的问题是:如果我想(必须)使用容器管理EntityManager
,那么在其中回滚事务的正确方法是什么?
Code Ranch 上的答案是正确的,你必须使用SessionContext
@Resource
private SessionContext ctx;
//and then in method
if(fail) {
ctx.setRollBackOnly();
}
另请参阅这篇文章。