2010-01-25 55 views
0

我的模式是這樣的:得到這樣的標籤#1與NHibernate

Flavor 
    public IList<Mention> Mentions 

Mention 
    public IList<Flavor> Flavors 

因此,許多對許多香精和提及之間。

我需要創建一個查詢,該查詢返回提及的風味和提及的次數。

今天,我可以通過提到的口味數量來獲得查詢條件,但不能返回很多次。

我的HQL查詢:

select flavor 
    from Flavor flavor 
    left join flavor.Mention mentions 
    group by flavor.Id, flavor.Name 
    order by count(mentions) desc 

有誰知道如何做到這一點?

回答

1

試試這個:

var flavors = Session.CreateQuery(@"select f.Id, f.PropertyName, count(elements(f.Mentions)) 
            from Flavor f where exists elements(f.Mentions) group by f.Id, f.PropertyName").List(); 

我相信它的伎倆......

+0

我嘗試,但如何能得到計數(元素(f.Mentions))? 我可以在Flavor中創建一個屬性,例如NumberOfMentions。在NumberOfMentions中如何自動添加計數(元素(f.Mentions))? Thank's – 2010-01-25 10:38:09

+0

該代碼只假設你的映射是你所擁有的(Flavor有一個多對多的屬性叫:Mentions和Mention有一個多對多的屬性叫做Flavors。就是這樣。不需要創建任何額外的屬性 – tolism7 2010-01-25 11:52:03

+0

我還沒有,我想我必須改變我的策略 除了獲得最高的風味,必須是「提及」特定類型(例如:Mention.Type = TypeMention.Question)。 我還必須訂購香精的量。 複雜? – 2010-02-13 02:16:55