hibernate里的修改操作
public void update(Object o)throws Exception {
  Session session = this.getSession();
  Transaction tx = session.beginTransaction();
  session.update(o);
  session.flush();
  tx.commit();
  this.closeSession();
  
  }
框架,我是个新手,对于修改里的 session.update(o)这里的对象o是我已经修改好的内容吗?
我们一般都知道的既然是修改肯定是将原来的改换成新的内容那么这里原来的内容是什么?它是将什么修改了
麻烦高手解释下,一直没理解

解决方案 »

  1.   

    对象o是你已经修改好的内容首先你要用session.get(id)[这里的id是主键] 根据id去加载这个对象 然后你可以修改该对象的属性值再使用session.update(o)来更新该对象的内容
    你可以这样吧:
    public void update(Object o)throws Exception {
      Session session = this.getSession();
      Object o2=session.get(o.class,o.id);//其中我假设id是o对象的主键
      Transaction tx = session.beginTransaction();
      session.update(o2);
      session.flush();
      tx.commit();
      this.closeSession();
       
      }
      

  2.   

    1楼说得没错,在Hibernate中的对象有3种状态:
    1)临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于session的缓存中。
    2)持久化状态(persistent):已经被持久化,加入到session的缓存中
    3)游离状态(detached):已经被持久化,但不再处于session的缓存中,例如session已经close想楼主的情况,用session.get(id)是使对象处于持久化状态,再用update,由于处于同一个session,所以对象都是处于持久化状态,就没有问题。如果楼主是new一个object出来,而没有带id,再去update就会有问题建议楼主买本hibernate的书看看。