关于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;
百度了一下,这个问题是更新时主键设置不对引起的,可是我进行的是删除操作,怎么还会出现这个异常,求解答
------解决方案--------------------你的ID不能写成JAVA中的Inter这个类型,你得写成int ;
不然它就出问题 了;
------解决方案--------------------像是有并发线程在起事务更新这行数据。
------解决方案--------------------先用load获取一个对象的实例试试?
------解决方案--------------------Meeting m=new Meeting();//m对象现在是transient状态
m.setId(id);
session.delete(m);
Hibernate执行删除,一般需要从库中获取对象(load,get)而不是new一个对象,待对象变成持久状态后,再执行删除操作,这样对象就变成游离态。