Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();//获取当前session
session.merge(entity);//解决游离态对象,该方法应该是根据游离态对象的OID,执行select语句,将游离态对象转成了持久化对象,
我试了一下总共有3中方法:
1:使用session.merge(entity) 没有用,还是报错
2:使用session.reflash(entity) 一样的
3:使用session.clear(entity) 没有报错了
@Override
public void update(Customer entity) {
//getHibernateTemplate().refresh(entity);
//getHibernateTemplate().merge(entity);
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();//获取当前session
//session.refresh(entity);//该方法是从hibernate的session中去重新取object,如果session中没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下。
session.clear();
getSessionFactory().getCurrentSession().setFlushMode(FlushMode.AUTO);
this.getHibernateTemplate().update(entity);
}
参考:原博客