日期:2014-05-17  浏览次数:20676 次

关于hibernate的一个异常的问题
在使用hibernate进行删除操作的时候,报了一个奇怪的错误:
org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1;

主键设置是自增的,删除操作代码如下:
session=sf.getCurrentSession();
Meeting m=new Meeting();
m.setId(id);

try{
  session.delete(m);
}catch(Exception e){
  e.printStackTrace();
  return false;
}
return true;

百度了一下,这个问题是更新时主键设置不对引起的,可是我进行的是删除操作,怎么还会出现这个异常,求解答
Hibernate 异常

------解决方案--------------------
你的ID不能写成JAVA中的Inter这个类型,你得写成int ; 
不然它就出问题 了;

------解决方案--------------------
像是有并发线程在起事务更新这行数据。
------解决方案--------------------
先用load获取一个对象的实例试试?
------解决方案--------------------
Meeting m=new Meeting();//m对象现在是transient状态
 m.setId(id);
session.delete(m);
Hibernate执行删除,一般需要从库中获取对象(load,get)而不是new一个对象,待对象变成持久状态后,再执行删除操作,这样对象就变成游离态。