问题描述
配置文件如下:<sql-queryname="getMergeableOrder"read-only="true"><returnclass="Order"alias="order"/><return-joinalias="ordresMerchandises"property="order.OrdresMerchandises"/><!--这里报错。。。--><!--<return-joinalias="merchandises"property="ordresMerchandises.Merchandises"/>--><![CDATA[execsp_getMergeableOrder]]></sql-query>由于Order和Merchandises是多对多的关系,表关系为Order-OrdresMerchandises-Merchandises,现在我是这样访问:foreach(OrderosinOrders){foreach(OrdresMerchandiseominos){om.Merchandise.....//由于Merchandise没有加载,会出现n+1次查询问题,有没有别的方法可以避免?}}
解决方案
解决方案二:
getOrdresMerchandise(){}你应该在这个方法里,用一个SQL语句拿到你需要的所有东西。当然,这个做法不是正规的编程方法,但如果效率成为主要瓶颈,那么不用管优雅不优雅了。
解决方案三:
学习!!
解决方案四:
这个是hibernate...?俺不太懂哦。。如果仅仅是想知道如何把这个延迟加载搞的恶心效果去掉你可以通过leftjoin把属性一起查询出来那就没啥问题了吧
解决方案五:
@老紫竹这里是执行一个存储过程,所有数据已经准备好,但是填充到对象时只能填充两级,即Order和Order.OrdresMerchandises