Nhibernate-无法在一个查询中获取多个集合

Nhibernate-无法在一个查询中获取多个集合,nhibernate,Nhibernate,我有一个实体配方,它有3个集合图像,评论和成分。它们被映射为一个包 对于一个网站,我想用配方加载配方集合,即非惰性加载,因此我发现我可以使用以下查询: from Recipe r left join fetch r.Images left join fetch r.Ingredients left join fetch r.Comments 但这是一个例外: 如果其中一个集合为空,则无法在单个查询中获取多个集合 袋子 那么,我如何不懒洋洋地加载我的菜谱并加载集合,从而允许集合中可能没有任何行呢

我有一个实体配方,它有3个集合图像,评论和成分。它们被映射为一个包

对于一个网站,我想用配方加载配方集合,即非惰性加载,因此我发现我可以使用以下查询:

from Recipe r
left join fetch r.Images
left join fetch r.Ingredients
left join fetch r.Comments
但这是一个例外:

如果其中一个集合为空,则无法在单个查询中获取多个集合 袋子


那么,我如何不懒洋洋地加载我的菜谱并加载集合,从而允许集合中可能没有任何行呢?我不熟悉这一点,需要解释。

将集合映射为一个集合


袋子是一个集合,可以包含同一物品的多个副本

更改为集合将允许此操作,但您确定这就是您要执行的操作吗

以这种方式“获取”多个子集合可能对系统性能非常不利。您很容易得到一个笛卡尔乘积,它从数据库中获取的行数是您需要的行数的许多倍

Ayende指出了潜在的问题


您可能希望查看
session.CreateMultiQuery()
session.CreateMultiCriteria()

以避免笛卡尔查询。我将使用futures和left outer联接执行3个查询