我使用Hibernate和Spring和我得到在执行以下代码此异常关联:非法企图的集合,在Hibernate中两次公开会议
Session oSession = getSession();
try
{
oSession.setFlushMode(FlushMode.COMMIT);
getHibernateTemplate().delete(oProject);
oSession.flush();
bResult = true;
}
catch (Exception e)
{
bResult = false;
logger.error(e);
}
我读过关于Hibernate的一些会话管理和我有一个预感,这段代码有很差的会话处理。有两次公开会议的原因是什么? Hibernate APIs说getSession()
函数返回一个新的会话对象或现有的。在这种情况下,它从哪里获得现有会话对象?如果它创建一个新的会话对象,那么处理涉及的集合仍然可以吗?
任何帮助将不胜感激。提前致谢!更多的功率叠加。
你已经省略了最重要的部分:getSession调用的实际背后是什么?你打电话给哪个对象?它看起来像你在一些框架内写这个代码。 Hibernate自己的方法是'SessionFactory.getCurrentSession'。 –
@MarkoTopolnik - getSession()调用来自Spring框架的HibernateDAOSupport。看起来类已经扩展了,并且使用了该函数。对于缺乏信息抱歉。 – Oneb