a different object with the same identifier value was already associated with

a different object with the same identifier value was already associated with
最近在工作中遇到这样一个异常,异常的原因很容易找到,就是看怎么去解决这个异常了。


我用的是hibernate3.0。
方案一:在写完要一个完整的操作之后,比如,delete操作,调用this.getHibernateTemplate().evict(object),这样就可以把多余的对象给清除掉了。然后再执行需要的操作,如saveOrUpdate。

方案二:同样是在一个完整的操作之后,比如,delete操作,然后同时调用
this.getHibernateTemplate().flush();this.getHibernateTemplate().clear(); 来强迫执行,然后再执行需要的操作,如saveOrUpdate。(注意,这种方法要同时执行这两个方法,单独执行一个都无法达到预期目的)。

eg:      

  Iterator iter = map.entrySet().iterator();
     while (iter.hasNext()) {
      Session session = getSession();
      Transaction tx =  session.beginTransaction();
      Map.Entry entry = (Map.Entry) iter.next();
      session.save(entry.getValue()); 
      session.flush();
      tx.commit();
      session.clear();
}

你可能感兴趣的:(object,with,identifier,value,different,a,the,same)