Nhibernate 集合中的特定大小,包括带有HQL的第二个筛选器?
我正在与以下场景作斗争:假设我有两个实体Nhibernate 集合中的特定大小,包括带有HQL的第二个筛选器?,nhibernate,hql,Nhibernate,Hql,我正在与以下场景作斗争:假设我有两个实体教室和成员,用多对多映射。教室有集合成员,包含实体成员。 我想得到有一定数量成员的教室。这将导致如下结果: 来自教室cr,其中cr.Members.size
教室
和成员
,用多对多映射。教室有集合成员
,包含实体成员
。
我想得到有一定数量成员的教室。这将导致如下结果:
来自教室cr,其中cr.Members.size<10
现在我在教室里有一个类型
。我想先过滤类型,然后过滤尺寸。这行不通:
来自教室cr,其中cr.Members.size<10和cr.Members.Type=1
结果:非法尝试取消引用集合
我如何编写这样的查询?我想您需要进行一次连接
from Classroom as cr left join cr.Members as m
where cr.Members.size < 10 and m.Type = 1
从教室作为cr离开加入cr。成员作为m
其中cr.构件尺寸<10,m.类型=1
我也以加入而告终-不幸的是,尽管使用了DistinctRootEntityResultTransformer
,但我在结果中遇到了多个教室的问题。整个查询比上面的示例要复杂得多(我猜它会像上面的示例那样工作),所以我仍然被后处理过滤所困扰,导致了丑陋的延迟负载和性能问题)。