2009-12-07 57 views
0

我也有同樣的情況,我已經在我的web.xml中像這樣配置OpenSessionInViewFilter。春季冬眠會議與http請求問題

<!-- Hibernates session management for request --> 
<filter> 
    <filter-name>hibReqSessionFilter</filter-name> 
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>hibReqSessionFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

但仍即時得到同樣的錯誤

[12/7/09 4:22:17:968 EST] 0000001e WebApp  E [Servlet Error]-[springweb]: org.hibernate.LazyInitializationException: could not initialize proxy - no Session 
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132) 
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174) 
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190) 
at com.moodys.mspg.model.MspgLkpAnalyst_$$_javassist_5.getAnalystId(MspgLkpAnalyst_$$_javassist_5.java) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:615) 
at org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:314) 
at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145) 
at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263) 
at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190) 
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:754) 
at com.ibm._jsp._deallist._jspx_meth_c_out_10(_deallist.java:302) 
at com.ibm._jsp._deallist._jspx_meth_c_forEach_0(_deallist.java:375) 
at com.ibm._jsp._deallist._jspService(_deallist.java:97) 
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122) 
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:226) 
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest(AbstractJSPExtensionProcessor.java:285) 
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321) 
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:236) 
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257) 
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:902) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1095) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1036) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145) 
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565) 
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3440) 
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267) 
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815) 
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1461) 
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:118) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267) 
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) 
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743) 
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873) 
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473) 

,如果我下班此過濾器並使用懶=我的ORM「假」 XMLS它可以作爲預期。

但我想要的東西被延遲加載。可以任何機構幫助我得到這個achived

許多在此先感謝

+0

你可以發佈相關代碼(特別是控制器)嗎? – 2009-12-07 12:46:59

+0

發佈更多代碼!有些事情正在關閉你的會議... – 2009-12-08 14:08:46

回答

1

/相同的請求過程中,請您加載的實體在同一個會話?如果不是,則試圖在分離的實體上延遲加載集合(即實體的會話已關閉),這將導致LazyInitializationException

如果要顯示實體先前的請求期間被加載,你應該能夠從數據庫中重新加載它,所以它再與當前Hibernate會話關聯。

(對於託管/分離的實體的一個簡短的說明,請參閱我的answer to this unrelated question。)

編輯基於評論:嗯,在這種情況下,我的魔法到此結束。例外情況很明顯 - 您嘗試加載收藏時沒有公開會話。如果你真的實體不存儲在會話中的某個地方,也許是因爲你正在經歷一個POST/redirect/GET週期,那麼我只能建議你通過OpenSessionInViewFilter.doFilterInternal()步驟與調試,看看發生了什麼事情在那裏。祝你好運!

+0

感謝您的回覆Henning。 它僅爲單個請求創建問題。 我有項目存在於一對多維吾爾船與我的實體(這是造成這個錯誤)一列。如果我intorduce懶惰=「假」的聲明它的作品。但我希望它懶加載。 請幫忙 – Shiv 2009-12-08 09:52:22

0

spring將在您的應用程序上下文中查找會話工廠,默認名稱爲sessionFactory。如果您不使用默認名稱,請爲OpenSessionInViewFilter配置名稱。