[注意] 请查看我的更新,了解真正的问题。我离开了原来的,以防它对任何人都有用......
试图让这个工作。就我所知,它看起来像文档中的Kats / Kittens示例,但是当我尝试使用它时,我得到一个NullReferenceException。
CustomerOrder order = CurrentSession.CreateQuery(
@"select new CustomerOrder(Name)
from CustomerOrder o
left join fetch o.OrderItems as items
where o.Id = :Id")
.SetParameter("Id", id)
.UniqueResult<CustomerOrder>();
如果我省略了连接提取(只是在没有OrderItems的情况下带回'CustomerOrder'),它就可以了。我的CustomerOrder有一个构造函数,它接受一个字符串'Name',数据库中有OrderItems记录,用于我检索的订单。
我做错了什么?
[更新] 我刚刚读到我想要做的事情并没有真正意义,因为我实例化一个带有一些值的新对象,而我正在做的是有效地尝试获取OrderItems,就好像它们属于新实例化的对象一样,他们没有。
我需要的是一个只填充名称字段的订单,以及它的集合或OrderItem子项,理想情况下只填充其“描述”字段。我想这样做,所以我不会像HQL通常那样检索所有列(出于性能原因)。
最好的方法是什么?
由于
答案 0 :(得分:0)
感谢JB Nizet和Rippo的见解。我尝试了一些东西,表现很好(无论如何我的目的)。如果它确实会导致问题,我会看看ResultTransformer,但我确信我的应用程序性能的其他方面对其运行速度(我可以通过性能分析等进行优化等)的影响远大于正在检索的列。