2015-10-06 45 views
0

在我的服务层,我调用DAO类方法,该方法是调用如何在hibernate中选择和更新同一个对象?非法企图的代理有两个打开的会话

session().get(xyz.class, id); 

我返回检索对象返回给服务类关联。然后我更新这个对象并将更新的对象传递给dao类的更新方法。

getSession().saveOrUpdate(xyzObj); 

但在这里,而不是更新的我得到这个例外

org.hibernate.HibernateException: illegally attempted to associate a proxy with two open Sessions 

请告诉我正确的方式做同一个对象的选择更新。

回答

0

尝试关闭第一个会话,然后再获取另一个会话,或者对这两个操作使用相同的会话。作为替代我认为:getSession().merge(xyzObj);应该工作。

0

将具有相同实体(或多个实体)的所有DA操作放入一个服务(或称为DAO)类中,该类使用Session封装工作。

1

发现问题。

我用

sessionFactory.openSession(); 

获取会话对象。因此多个会话正在创建。替换它与

sessionFactory.getCurrentSession(); 

现在它的工作正常。

相关问题