[注意]有关真正的问题,请参阅我的更新。我留下了原来的,以防它对任何人有用......
只是想让这个工作。据我所知,它看起来像文档中的 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 有一个构造函数,它接受一个字符串作为“名称”,并且数据库中有我正在检索的订单的 OrderItems 记录。
我究竟做错了什么?
[更新] 我刚刚读到我正在尝试做的事情并没有真正意义,因为我正在用一些值实例化一个新对象,而我正在做的是有效地尝试获取 OrderItems,就好像它们属于新实例化的对象,他们没有。
我需要的是一个仅填充了名称字段的订单,以及它的集合或 OrderItem 子项,理想情况下只填充了他们的“描述”字段。我想这样做,所以我不会像 HQL 通常那样检索所有列(出于性能原因)。
最好的方法是什么?
谢谢