SSH框架下有个地方无法实现延迟加载,大侠指点一下了:
XML的配置中:
policy.hbm.xml
..................
                <map name="insurants" table="Insurant" lazy="true" outer-join="false"
                        sort="unsorted" cascade="all" order-by="id">                        <key column="policy"></key>                        <index column="id" type="java.lang.String" length="32" />                        <one-to-many class="com.db.bo.Insurant"/>                </map>
..................程序中运行时倒是实现了延迟加载,单步跟踪时并没有去加载关联数据,但是在一直将结果集(policylist)输出到JSP时,又在不停地加载关联数据 insurant这个表了
JSP的部分代码:
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %>
............
<nested:iterate id="policy" name="policyList">
.....................不知道在JSP中是否有什么特别设置的吗???

解决方案 »

  1.   

    <one-to-many class="com.db.bo.Insurant"/>
    这加上 
    fetch="select"
      

  2.   

    在对象传到页面中后,想要延迟加载某一对象级联的对象属性是做不到的。这这时候hibernate的session已经断了。如果需要,还得根据相关条件去数据库重新查出来。否则的话只有把延迟加载改成立即加载了
      

  3.   

    我觉得应该是这样的,没怎么用过hibernate,不太确定
      

  4.   


    <filter>
    <filter-name>osivFilter</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter>
    <filter-mapping>
    <filter-name>osivFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    web.xml加上试试
      

  5.   


    跟确切的说,应该是输出到页面中的对象已经不在hibernate的session管理中了,故无法去延迟加载级联对象
      

  6.   


    这跟这个没什么关系吧。outer-join是定义查询时表关联的方式
      

  7.   


    从filter的名字来看,这个filter应该就可以解决问题。
      

  8.   

    在web.xml中加了这段,还是没有用啊,感觉在JSP中还是不停在加载关联表的,
    因为是页面是个列表,所以每条数据都会去数据库中查询一次关联表,非常影响查询效率了
      

  9.   


    看这个意思是在JSP中应该不会再去查询关联表才对,但现在单步跟踪时发现在JSP中不停在访问这个关联表,
    如果去掉<nested:iterate...这句就没查询了
      

  10.   

    openSessionInView  正解!
      

  11.   


    这个就不知道怎么回事了,是不是跟<nested:iterate..这个标签有关???还是觉得不应是那样的!通常情况下持久层框架的session维护的对象,到页面中时应该是不在范围之中的
      

  12.   

    OpenSessionInView这个不行,仍是老样子
    不知道为什么在使用<nested:iterate 时后台显示在加载关联表
      

  13.   

    假如楼主单纯的要想在jsp页面中实现延时加载,使用Opensessioninview是可以的!
      

  14.   


    对嘛 要使用spring的这东西 
      

  15.   

    <one-to-many class="com.db.bo.Insurant"/>
    配了这个查询的时候要加载这个类
      

  16.   

    楼上的,有什么办法不让加载 insurant这个类吗?
      

  17.   

    学习了,OpenSessionInView这个能保持session打开,一直到页面上!!!!!!
      

  18.   

    另外定一个定实体类,仅把JSP需要的数据传到JSP中就OK