解決org.hibernate.LazyInitializationException: could not initialize proxy - no Session懶加載問題

問題描述:

Struts Problem Report

Struts has detected an unhandled exception:

Messages:
  1. could not initialize proxy - no Session
  2. Error reading 'name' on type future.oa.domain.Department_$$_jvstb8a_0
  3. javax.el.ELException: Error reading 'name' on type future.oa.domain.Department_$$_jvstb8a_0
File: org/hibernate/proxy/AbstractLazyInitializer.java

Stacktraces

org.apache.jasper.JasperException: javax.el.ELException: Error reading 'name' on type future.oa.domain.Department_$$_jvstb8a_0
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    .......

javax.el.ELException: Error reading 'name' on type future.oa.domain.Department_$$_jvstb8a_0
    javax.el.BeanELResolver.getValue(BeanELResolver.java:110)
    org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
    org.apache.el.parser.AstValue.getValue(AstValue.java:183)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    ......

org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:164)
    org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:285)
    org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
    future.oa.domain.Department_$$_jvstb8a_0.getName(Department_$$_jvstb8a_0.java)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ......

You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:

  struts.devMode=false
in your WEB-INF/classes/struts.properties file.

解決方法:
解決懶加載問題。

方法一:(直接將懶加載關閉):
在 .hbm.xml 裏
<!--  lazy="false"關閉懶加載 -->
<set name="children" cascade="delete" lazy="false">   
<key column="parentId"></key>
<one-to-many class="Department"/>
</set>
缺點:一些懶加載的優點也用不了了。
方法二:
在 web.xml裏(注:要在 <!-- 配置struts2核心的過濾器 --> 之前
  <!-- 配置Spring的用於解決懶加載問題的過濾器 -->
  <filter>
  <filter-name>OpenSessionInViewFilter</filter-name>
  <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>OpenSessionInViewFilter</filter-name>
  <url-pattern>*.action</url-pattern>
  </filter-mapping>
  然後在 *.hbm.xml裏 再打開懶加載。

發佈了28 篇原創文章 · 獲贊 21 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章