как поднять OptimisticLockException - PullRequest
       11

как поднять OptimisticLockException

1 голос
/ 28 сентября 2010

Невозможно отловить исключение оптимистической блокировки.

один из способов вызвать исключение 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
              }     
          }
       }

Пожалуйста, помогите, у вас есть еще идеи или скажите, какой путь лучше.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2013
try
{
    getEntityRepository().update("Some Persistence Obj");
}
catch (EJBException e)
{
    if (e.getCause() instanceof OptimisticLockException)
    {
        // code goes here
    }
}
0 голосов
/ 28 сентября 2010

Я думаю, что первый способ - это разумный способ, если вы хотите перехватить OptimisticLockException и обновить данные или повторить операцию.Что касается второго способа, если текущая транзакция не активна, не генерируется исключение RollbackException.

...