2010-09-26 99 views
2

我有實體問題使用許多一對多到實體標籤(問題的標籤列表)映射。我想加載所有問題,它們具有特定的標籤
例如:
問題1(TAG1)
Problem2(TAG1,TAG2)
Problem3(TAG1,TAG3)
Problem4(標籤3,TAG4)
我想通過過濾器的問題「TAG1 ,tag2「。該系統將返回:
問題1(TAG1)
Problem2(TAG1,TAG2)
Problem3(TAG1,TAG3)
我一直在琢磨不透這個問題了一個星期了。你有什麼想法嗎?
P.S.加載所有列表並使用LINQ過濾它是最後一個可能的變體...NHibernate的許多一對多標準

回答

2

HQL比Criteria更適合這些查詢。

一個可能的解決方案:

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

我可以使用HQL查詢和標準一起?問題是我也需要分頁(SetFirstResult()和SetMaxResult())。 – 2010-09-26 15:09:58

+0

HQL和Criteria是不同的方法。但是你也可以在HQL查詢上使用SetFirstResult和SetMaxResult。 – 2010-09-26 15:58:27