无法捕获乐观的锁定异常。
提出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
}
}
}
请帮助您有任何其他想法或告诉我哪种方式更好。
答案 0 :(得分:0)
我认为如果你想捕获OptimisticLockException并刷新数据或重试你的操作,第一种方法是合理的。至于第二种方式,如果当前事务不活动,则不会抛出RollbackException。
答案 1 :(得分:0)
try
{
getEntityRepository().update("Some Persistence Obj");
}
catch (EJBException e)
{
if (e.getCause() instanceof OptimisticLockException)
{
// code goes here
}
}