我使用多对多将实体问题映射到实体标记(问题有一个标记列表)。我想加载所有问题,其中包含特定的标记
例如:
问题1(tag1)
问题2(tag1,tag2)
问题3(tag1,tag3)
问题4(tag3,tag4)
我想通过过滤器“tag1,tag2”来解决问题。系统应返回:
问题1(tag1)
问题2(tag1,tag2)
问题3(tag1,tag3)
我已经困扰了这个问题一个星期了。你有什么想法吗?
P.S。加载所有列表并使用LINQ过滤它是最后一种可能的变体......
答案 0 :(得分:2)
HQL比Criteria更适合这些查询。
一种可能的解决方案:
session.CreateQuery(@"select distinct p
from Problem p
join p.Tags t
where t in (:tags)")
.SetParameterList("tags", listOfTags)