我需要知道如何捕获与 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();
}