我使用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