配置文件如下:
<sql-query name="getMergeableOrder" read-only="true">
    <return class="Order" alias="order" />
    <return-join alias="ordresMerchandises" property="order.OrdresMerchandises" />
    
    <!--这里报错-->
    <!--<return-join alias="merchandises" property="ordresMerchandises.Merchandises" />-->    <![CDATA[exec sp_getMergeableOrder]]>
</sql-query>
由于Order和Merchandises是多对多的关系,表关系为 Order - OrdresMerchandises - Merchandises,现在我是这样访问:
foreach(Order os in Orders){
     foreach(OrdresMerchandise om in os){
          om.Merchandise.....//由于Merchandise没有加载,会出现n+1次查询问题,有没有别的方法可以避免?
     }
}

解决方案 »

  1.   

    getOrdresMerchandise(){}你应该在这个方法里,用一个SQL语句拿到你需要的所有东西。当然,这个做法不是正规的编程方法,但如果效率成为主要瓶颈,那么不用管优雅不优雅了。
      

  2.   

    这个是hibernate...?俺不太懂哦。。 如果仅仅是想知道如何把这个延迟加载搞的恶心效果去掉 你可以通过left join把属性一起查询出来 那就没啥问题了吧
      

  3.   

    @老紫竹
    这里是执行一个存储过程,所有数据已经准备好,但是填充到对象时只能填充两级,即Order和Order.OrdresMerchandises