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

これは、セッションをフラッシュした後にトランザクションをコミットするためです。以下のようにシーケンスを変更します。

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