1

次のドメイン オブジェクトがあります。

public class Data
{
    public virtual int ID { get; set; }
    public virtual DateTime TimeStamp { get; set; }
    public virtual int Value { get; set; }

    public virtual Channel Channel { get; set; }       

}  

Rhino.Commons のリポジトリを使用しています。一定期間、いくつかのチャネルの値の合計を選択する必要があります。これらの値は、チャネル ID 順に並べる必要があります。次のクエリを使用します(リポジトリメソッドで):

var criteria = DetachedCriteria.For<LiveData>()
            .Add(Restrictions.Le("TimeStamp", startDate))
            .Add(Restrictions.Ge("TimeStamp", endDate))
            .Add(Restrictions.InG<Channel>("Channel", channels))
            .SetProjection(Projections.Sum("Value"))
            .SetProjection(Projections.GroupProperty("Channel"));

long[] result = ReportAll<long>(criteria, Projections.ProjectionList(), Order.Asc("Channel"));

このクエリは長い数値のリストを返さないため、最後の行でエラーが発生します。次のようなオブジェクトのリストを返します (それで動作します):

public class ResultValue
{
    public virtual Channel Channel { get; set;}
    public virtual int Value { get; set; }
    public ResultValue()
    {            
    }

    public ResultValue(int value, Channel channel)
    {
        this.Value = value;
        this.Channel = channel;
    }
}

これは、グループ化を行う基準に Projections.GroupProperty("Channel") プロジェクションを追加したためです。投影の 1 つ (私のサンプルからの Projections.GroupProperty("Channel")) を結果セットから削除する方法、または投影なしでグループ化を追加する方法はありますか?

4

1 に答える 1

1

これは保留中のNHibernateの問題です。

于 2009-02-15T14:49:14.127 に答える