我正在使用Bean-managed-transaction并在发生OpstimisticLockException时遇到问题。 捕获异常时(由于OpstimisticLockException),代码将执行utx.rollback(),并且我得到异常,说该事务不存在。
没有得到官方文档的任何确切答案,如果我们在OptimisticLock的情况下在BMT中手动回滚事务,想想doc在CMT中说,如果OptimisticLock发生,则事务将被标记为回滚。
但是,我明确调用utx.rollback()会给我异常抱怨该事务不存在。所以我怀疑通过调用commit(),甚至发生了OptimisticLockException,事务终止,没有什么可以回滚。
任何人都知道这个东西是如何工作的?感谢
Flow就像这样:
em = emf.crateEntityManager();
try {
utx.begin();
em.joinTranaction();
...do something
em.merge(obj);
utx.commit;
}catch (Exception e) {
utx.rollback();
}