我正在使用spring mvc app。我的问题是当我通过控制器类调用dao中的delete方法时,在dao中不处理异常。但如果我在控制器中使用try catch around调用方法,它将捕获错误。
控制器类方法:
customerDao.delete(id);
Rapository类:
public void delete(long id)
{
try{
em.remove(em.find(id));
}
catch(Exception e)
{
//not come to here
}
}
如果我使用try catch“customerDao.delete(id);
”处理错误。
为什么我不能在dao类中处理异常。
注意:抛出的异常是发现了childrollbackexception的子记录
答案 0 :(得分:0)
EntityManager.remove不会立即执行任何操作 - 事务提交会强制JPA将其语句刷新到数据库,这时您将获得异常。如果要在DAO中处理异常,请添加em.flush();在try块中。这将强制语句到数据库并立即抛出任何异常。