OptimisticLockException

OptimisticLockException

无法捕获乐观锁异常。

引发OptimisticLockException的一种方法是使用em.flush()

try{
   //some enitity
   em.flush()
  }
catch(OptimisticLockException ole){}


但是我不认为这是最好的解决方案,因为在这个完整的数据库中,刷新率很高。

另一种解决方法是捕获EJBException并在其中找到RollBackException

       try{
            // some code
        }
       catch (EJBException ex) {

          if (ex.getCausedByException().getCause().toString().
              indexOf("javax.transaction.RollbackException")!= -1){
                   // do work
              }
          }
       }


请帮助您有其他想法或告诉我哪种方法更好。

最佳答案

我认为如果您想捕获OptimisticLockException并刷新数据或重试操作,则第一种方法是一种合理的方法。至于第二种方法,如果当前事务未处于活动状态,则不会抛出RollbackException。

10-06 09:44