Java org.hibernate.StaleStateException:批处理更新从更新[0]返回了意外的行数;实际行数:0;预期:1
当我尝试将数据库中的键字段更新到数据库中时,使用session.flush()和session.clear()方法也会出现此问题 javaJava org.hibernate.StaleStateException:批处理更新从更新[0]返回了意外的行数;实际行数:0;预期:1,java,Java,当我尝试将数据库中的键字段更新到数据库中时,使用session.flush()和session.clear()方法也会出现此问题 java SessionFactory sf = HibernateUtil.getSessionFactory(); Session s = sf.openSession(); Criteria crit3=s.createCriteria(RoleTable.class); roledata=crit3.list()
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();
}
这是因为您在刷新会话后提交了事务,请更改其顺序,如下所示:
tx.commit();
s.flush();
s.clear();
您正在更新现有角色表(我想您只想更新Sno字段)。 您不需要创建新角色表。只需编辑列表中的一个(rt实例)