2010-04-29 68 views
2

我在Spring應用程序中收到LazyInitializationException。我有OpenEntityManagerInViewFilter配置,所以我把我所有的關係設置爲FetchType.LAZY,他們都工作。問題是,當我試圖訪問通過Spring安全和打印LAZY信息在JSP中,這樣的事情是在會話的用戶:Spring中的LazyInitializationException

<sec:authentication property="principal" var="userAuth"/> 
${userAuth.organisation.id} 

,我得到

org.hibernate.LazyInitializationException: could not initialize proxy - no Session 

雖然我可以做$ {} userAuth.username沒有任何問題

我有一個自定義身份驗證提供這僅僅是它加載使用Hibernate

<sec:authentication-provider user-service-ref="userDAOImpl"> 
用戶DAO

奇怪的是,當我將組織對象設置爲EAGER時,我遇到了同樣的問題。

只有當我嘗試通過sec:身份驗證訪問時纔會出現此問題。如果我將用戶添加到模型中,然後訪問jsp中的數據,它將起作用。

爲什麼我無法訪問存儲在鏈接到用戶的對象中的數據?

感謝

+0

做你搜索這個異常的stackoverflow? – Bozho 2010-04-29 12:16:35

回答

6

因爲你在獲取用戶登錄的主要信息,在那一刻將它們存儲在HTTP會話。

如果試圖在以後的任何HTTP請求訪問該對象的非初始化集合時,Hibernate的Session(其中主要是取指)被關閉(剛登錄後),你會得到LazyInitializationException中

相關問題