2013-08-26 21 views
0

当我试图更新数据库的关键字段时,这个问题也来自session.flush()和session.clear()方法。org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数;实际行数:0;预期:1

Bean.java

SessionFactory sf = HibernateUtil.getSessionFactory(); 
     Session s = sf.openSession(); 
     Criteria crit3=s.createCriteria(RoleTable.class); 
     roledata=crit3.list(); 
     for(RoleTable rt:roledata){ 
     Transaction tx = s.beginTransaction(); 
     RoleTable rot=new RoleTable(); 
     rot.setSno(1); 
     rot.setObtype(rt.getObtype()); 
     rot.setObid(rt.getObid()); 
     rot.setText(rt.getText()); 
     rot.setSdat(rt.getSdat()); 
     rot.setEdat(rt.getEdat()); 
     rot.setUpdate(rt.isUpdate()); 
     rot.setCreate(rt.isCreate()); 
     rot.setDelete(rt.isDelete()); 
     rot.setRead(rt.isRead()); 
     s.update(rot); 
     s.flush(); 
     s.clear(); 
     tx.commit(); 

     } 
     s.close(); 
     sf.close(); 
    } 

回答

0

这是因为你冲洗会议,改变它的序列,例如下面后提交事务:

tx.commit(); 
s.flush(); 
s.clear(); 
0

您更新现有RoleTable(我想你只是想更新Sno字段)。 你不需要创建一个新的RoleTable。只需编辑列表中的一个(rt实例)

相关问题