2009-06-06 8 views
1

NHibernateで動作するタグクラウドアーキテクチャを取得しようとしています。Nhibernateタグクラウド

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

この表は、スキーマ内のいくつかのエンティティにマップされるため、コレクションごとにタグクラスにコレクションを追加する必要はありません。

しかし、私はタグのエンティティを照会し、結合されたすべてのテーブルでカウント(*)を返す必要があります。私はSQLでこれを簡単に行うことができましたが、私はまだNHとの光を見ていません。

一部のHQLの作成を開始しました。

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

私は何に加入しますか?オブジェクトモデルでは多対多のブリッジテーブルにはクラスもプロパティもないため、これは機能しないということですか?

あなたは何をお勧めしますか? IDがCriteriaで実行できるかどうかを知りたい

多くのおかげで、

イアンこれについての基準を使用してとスタートとして、私はそれを実行していないと私は参加を行う方法がわからないどのように

+0

タグがエンティティであることは理にかなっていますか?それは本当に価値オブジェクトではありませんか?おそらく同じ名前の2つのタグを意味しますが、異なるIDは意味がありません。 – UpTheCreek

答えて

1

...

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

SQLが非常にシンプルなときは非常に不満です。たとえば、タグとエンティティがentity_tagテーブルで結合されているとします。私は、タグのカウントのために必要なすべてが 選択t.Textで、(*)カウント タグT から、私はよく分からないt.text でet.TagId = t.Id グループにEntity_Tagsら に参加私はニューハンプシャーからとても簡潔なものを手に入れることができます。私は本当にNHを働かせるためにコレクションでタグモデルのクラスを汚染したくないのです。 – madcapnmckay

関連する問題