2

我需要知道如何捕获与 Hibernate Optimistic 锁定相关的异常。我的问题是即使我已将更新语句放在 try/catch 块中,异常也没有被捕获。我的示例代码如下所示。

此代码存在于服务层中,我使用的是 Spring MVC 控制器。哪个是捕获此异常的最佳位置?它是在控制器中还是在服务类中?我试着在控制器中捕捉它,即使那也没用。

我觉得 Hibernate 将按照自己的策略执行更新查询,当它执行更新时,响应已经从控制器发送。

请建议如何捕捉它并向用户显示适当的消息。

try
{
//Some code to fetch the object from database
    Employee emp = employeeDao.load(id);
    emp.setName("xyz");
    employeeDao.saveOrUpdate(emp);
}
catch(StaleObjectStateException e)
{
    //TODO: Put the Exception in the response Object
    if (logger.isDebugEnabled()) logger.debug("Stale Data Exception: Request User to reload the Page");
    e.printStackTrace();
}

catch(HibernateOptimisticLockingFailureException e)
{
    //TODO: Put the Exception in the response Object
    if (logger.isDebugEnabled()) logger.debug("Stale Data Exception: Request User to reload the Page");
    e.printStackTrace();
}
catch(Exception e)
{
    //TODO: Put the Exception in the response Object
    if (logger.isDebugEnabled()) logger.debug("Stale Data Exception: Request User to reload the Page");
    e.printStackTrace();
}
4

0 回答 0