2009-06-06 96 views
1

我正試圖獲得在NHibernate中工作的標籤雲架構。Nhibernate標籤雲

public class Tag : Entity 
{ 
    public virtual int Id { get; set; } 
    public virtual string Text { get; set; } 
} 

此表將映射到我的模式中的一些實體,因此我不想爲每個關聯的標記類添加一個集合。

但我想要查詢標記實體並在所有連接的表中返回count(*)。我可以在SQL中輕鬆完成這項工作,但我還沒有看到NH的光芒。

開始寫一些HQL。

select t.Text, count(t.Id) 
from Tag t join ???? 
where t.Id= :tagid 
    group by t.Text 

我該加入什麼?因爲在對象模型中,多對多橋表沒有類和沒有屬性,這是否意味着這是行不通的?

你會建議什麼?我有興趣看看這是否可以在標準中完成。

非常感謝,

伊恩

+0

只是想知道 - 標籤是一個實體嗎?它不是一個真正的價值對象嗎?我的意思大概是兩個標籤完全相同的名稱,但不同的ID將是毫無意義的。 – UpTheCreek 2011-04-01 10:23:40

回答

1

這個怎麼樣,與使用標準一開始,我還沒有運行它,我不知道該怎麼辦的加入...

IList multiResults = s.CreateMultiCriteria() 
    .Add(s.CreateCriteria(typeof(Tag)).SetProjection(Projections.RowCount())) 
    .List(); 
+2

當sql非常簡單時,它非常令人沮喪。例如,如果我有標籤和實體加入entity_tag表。所有我需要的標籤計數是 選擇t.Text,COUNT(*) 從標籤T 加入Entity_Tags等 上et.TagId = t.Id 集團通過t.text 我不知道我可以從NH中獲得如此簡潔的內容。我真的不想用集合來污染我的標記模型類,只是爲了讓NH起作用。 – madcapnmckay 2009-06-07 11:59:25