0

[注意]有关真正的问题,请参阅我的更新。我留下了原来的,以防它对任何人有用......

只是想让这个工作。据我所知,它看起来像文档中的 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 通常那样检索所有列(出于性能原因)。

最好的方法是什么?

谢谢

4

1 回答 1

0

感谢 JB Nizet 和 Rippo 的见解。我尝试了一些东西并且性能很好(无论如何都是为了我的目的)。如果它确实引起了问题,我会查看 ResultTransformer 但我确信我的应用程序性能的其他方面会对它的运行速度产生更大的影响(我可以通过分析等进行优化)而不是数量正在检索的列。

于 2012-09-18T09:49:29.413 回答