在Struts2.2.3+Spring2.5.6+Hibernate3.5.5中配置了Spring的OpenSessionInViewFilter代码如下:<!-- 指定Spring的配置文件,默认从WEB-INF目录寻找配置文件,也可以通过Spring提供的classpath前缀指定从类路径下寻找。
        在本应用系统中,我们把配置文件存放在类路径下。-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext-hibernate.xml</param-value>        
    </context-param>    <!-- 实例化Spring容器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>        
    </listener>    <filter>
        <filter-name>hibernateLazyFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
        <init-param>
            <param-name>sessionFactoryBeanName</param-name>
            <param-value>sessionFactory</param-value>
        </init-param>
        <init-param>
            <param-name>singleSession</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>    <filter-mapping>
        <filter-name>hibernateLazyFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>    <filter>
        <filter-name>Spring character encoding filter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>    <filter-mapping>
        <filter-name>Spring character encoding filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>    <filter>
        <filter-name>struts-cleanup</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>    <filter>
        <filter-name>weboffice</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>    <filter-mapping>
        <filter-name>weboffice</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>   但是这个OpenSessionInViewFilter不起作用。我不想在Hibernate的配置文件中使用lazy=false。求大吓们帮忙解决。

解决方案 »

  1.   

    我很少使用xml·都是用的annotation·不过一般碰到这种情况·我都会在获得一个proxy的时候调用一下这个poxy的getXXX()方法··以确保proxy变成一个实体···这样就无需担忧lazy还是eager了··
      

  2.   

    恩,确实如此,先get一下实体,不管lazy还是eager,就都可以了。
      

  3.   

    添加get  set方法!祝楼主好运
      

  4.   

    get
    set
    比较好运。祝你好运
      

  5.   

    我在Service中加了Hibernate.isInitialized()和initialize()方法,但这样做跟直接在XML中设置lazy=false也没什么差别,因为在Service中的方法是公用的,所以不管我是否需要关联对象,其实都会进行立即加载。这样也没有发挥出Hibernate的Lazy Load功能,不知道我的理解是否正确。
      

  6.   

    OpenSessionInViewFilte放到Spring的Listener前面,否则没用。