1

前置きとして、NHibernate は私の快適な領域をはるかに超えているため、これは私が考えているよりもはるかに単純である可能性があります。

usersテーブルと、オブジェクトeventsにマップされたテーブルがありuserますevent

eventのオブジェクトは特異なオブジェクトを参照していuserます。

LastActivityTimeStampuserのオブジェクトに永続化するプロパティがあります。

EventTypeSuccesseventに関連するオブジェクトのプロパティがあります。

「オンライン」のユーザーのリストを特定するには、LastActivityTimeStampが以前に計算された値よりも大きく、テーブルcutoff内の最後のアクティビティがevents成功した「ログオフ」イベント タイプではなかったすべてのユーザー オブジェクトを収集する必要があります。

この基準はどのように書けばよいでしょうか?

4

1 に答える 1

1

これを微調整してみてください

var subquery = DetachedCriteria.For<Event>()
    .Add(Restrictions.Eq("Success", true))
    .Add(Restrictions.EqProperty("User.Id", "u.id"))
    .AddOrder(Order.Desc("TimeStamp"))
    .SetProjection(Projections.Property("EventType"))
    .SetMaxResults(1);

session.CreateCriteria<User>("u")
    .Add(Restrictions.Ge("LastActivityTimeStamp", cutoff))
    .Add(Subqueries.Ne(EventType.LogOff, subquery));
于 2011-11-10T08:49:57.470 に答える