当我尝试将关键字段更新到数据库时,这个问题也出现在session.flush()和session.clear()方法中。
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 :(得分:0)
这是因为你在刷新会话后提交了事务,改变它的顺序如下:
tx.commit();
s.flush();
s.clear();
答案 1 :(得分:0)
您正在更新现有的RoleTable(我想您只想更新Sno字段)。 您不需要创建新的RoleTable。只需编辑列表中的一个(rt实例)