0

当我试图将关键字段更新到数据库时,这个问题也出现在 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();
    }
4

2 回答 2

0

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

于 2013-08-26T07:51:43.187 回答
0

这是因为您在刷新会话后提交事务,更改它的顺序如下:

tx.commit();  
s.flush();
s.clear();
于 2013-08-26T07:00:33.567 回答