我正在開發一個需要使用Visual Paradigm的Java項目。 Visual Paradigm使用Hibernate。我的項目運行良好,直到我添加了Genady RMI。我也需要使用RMI。使用Hibernate + RMI「沒有會話或會話已關閉」
在服務器端,我有MainDb,它管理數據庫的所有查詢,在客戶端,我有實現RMI Remote的UserWindow和AdminWindow類。這兩個類通過RMI獲取對象MainDb。據
failed to lazily initialize a collection of role: dcl.UsuarioRegistrado.ORM_TieneVideosFavoritos, no session or session was closed.
我所知,:
當我運行服務器和客戶端,我已經得到了有關延遲初始化與錯誤的異常「沒有會話或會話已關閉」 Hibernate使用一個不同的會話,從中創建dcl.UsuarioRegistrado對象。問題是我沒有管理會話,因爲PersistentManager類只提供getSession()。 PersistentManager類是VisualParadigm提供的用於管理Hibernate的類。
我試過配置lazy =「false」的所有實體,但結果更糟,因爲某些實體的屬性未正確加載。例如,一個對象「Topic」被加載到String屬性「TopicName」爲null。
那麼,我能做些什麼來維持同一個會話呢?
在此先感謝,我非常抱歉,但我可憐的英語。我很難用英語解釋這種情況,所以再次感謝。
'PersistentManager.getSession()'使用'sessionFactory.getCurrentSession()'或'sessionFactory.openSession()'返回會話? –
您使用的C3P0連接池?如果是這樣,嘗試禁用它,看看它是否解決了這個問題。我有一個類似的問題與休眠完整的struts2插件。 – Resh32
@ Resh32它使用C3P0。我可以禁用它刪除中的屬性嗎? –
honnix