基本的代码如下:
List listIdInfo = criteria.list();
User u= (User)listIdInfo.get(0);
u.setName("bbb");
session.update(u);
session.flush;
session.close;可是整个过程不会生成sql语句,数据也没有更新。不知道为什么?

解决方案 »

  1.   

    Transaction tx = session.beginTransaction();
    List listIdInfo = criteria.list(); 
    User u= (User)listIdInfo.get(0); 
    u.setName("bbb"); 
    session.update(u); 
    session.flush; 
    session.close; 
    tx.commit();
      

  2.   

    改为
    List listIdInfo = criteria.list(); 
    User u= (User)listIdInfo.get(0); 
    u.setName("bbb");
    Transaction tx = session.beginTransaction(); 
    session.update(u); 
    tx.commit();
    session.flush; 
    session.close; 
      

  3.   

    我是用spring来管理事务的,整个过程是这样:
    Test t = new Test();
    t.setTTT("kkk");
    session.save(t);List listIdInfo = criteria.list();
    User u= (User)listIdInfo.get(0);
    u.setName("bbb");
    session.update(u);Test对象能够加入数据库,但是就是后面的User对象不能更新到数据库。?
      

  4.   

    你的User 对象是个临时对象,update应该是更新持久话对象和游离对象,我遇到过这样的问题,你可以试试。
    update() 使一个游离对象转变为持久化对象 过程是:
    1. 首先根据待更新实体对象的Key,在当前session的内部缓存中进行查找,如果发现,则认为当前实体对象已经处于Persistent状态,返回。从这一点可以看出,对一个Persistent状态的实体对象调用update语句并不会发生任何作用。 
    2. 初始化实体对象的状态信息(作为之后脏数据检查的依据),并将其纳入内部缓存。注意这里Session.update方法本身并没有发送Update SQL完成数据更新操作,Update SQL将在之后的Session.flush方法中执行(Transaction.commit在真正提交数据库事务之前会调用Session.flush)。
      

  5.   

    commit.
    发现这里好多人都不知道commit,怎么回事!