NHibernate多对多标准

时间:2010-09-26 10:30:50

标签: .net nhibernate

我使用多对多将实体问题映射到实体标记(问题有一个标记列表)。我想加载所有问题,其中包含特定的标记 例如:
问题1(tag1)
问题2(tag1,tag2)
问题3(tag1,tag3)
问题4(tag3,tag4)
我想通过过滤器“tag1,tag2”来解决问题。系统应返回:
问题1(tag1)
问题2(tag1,tag2)
问题3(tag1,tag3)
我已经困扰了这个问题一个星期了。你有什么想法吗? P.S。加载所有列表并使用LINQ过滤它是最后一种可能的变体......

1 个答案:

答案 0 :(得分:2)

HQL比Criteria更适合这些查询。

一种可能的解决方案:

session.CreateQuery(@"select distinct p
                      from Problem p
                      join p.Tags t
                      where t in (:tags)")
       .SetParameterList("tags", listOfTags)