无法在服务或外观层中捕获org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException

时间:2014-07-29 16:26:57

标签: java spring hibernate concurrency

public class AccountServiceFacade {

public void updateAccount(Account accnt) {
    try {
        getAccountService.updateAccount();
     }
    catch(HibernateOptimisticLockingFailureException e) { 
         e.printStackTrace();
      }
   }
}



public class AccountService {

public void updateAccount(Account accnt) {
    try {
     getAccountDAO().getHibernateTemplate().update(accnt);
    System.out.println("Updated sucessfully");
    } catch(HibernateOptimisticLockingFailureException e) { 
         e.printStackTrace();
    }
  }
}

我在事务中有AccountServiceFacade。 在AccountServiceFacade中,我的流程也没有来阻止阻塞。 只有我在表示层中获得Action类的异常。 但我需要根据异常来发送用户定义的消息。 那么如何才能在sevicefacade层或服务层中获得异常。

2 个答案:

答案 0 :(得分:0)

此时您可以尝试捕获StaleObjectStateException或StaleStateException。 但正如你所说,你已经在表示层中有一个例外,为什么不使用它呢?

答案 1 :(得分:0)

您可以使用

    catch (Exception e) {
                if(e instanceof StaleStateException || e instanceof OptimisticLockingFailureException || e instanceof HibernateOptimisticLockingFailureException || e instanceof org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException) {
                             some code
                }
     }