2009-12-07 56 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配置名称。