質問

私は、エンティティ「人人は友達(また、人の実体)のコレクションを持っています。

を持っています

私はLatestLoginが注文した特定の人、最初の10人のフレンドを取得したい。

私の最善の努力があります:

    public static IList<Person> GetFriends(Person person, int count)
    {
        Person personAlias = null;
        Person friendAlias = null;

        ICriteria criteria = NHibernateSessionManager.Instance.GetSession()
            .CreateCriteria(typeof (Person), () => personAlias)
            .CreateCriteria(() => personAlias.Friends, () => friendAlias, JoinType.LeftOuterJoin)
            .AddOrder(() => friendAlias.LatestLogin, Order.Desc)
            .Add<Person>(p => p.ID == person.ID)
            .SetMaxResults(count);
        return criteria.List<Person>();
    }

すべてのユーザーの友人をつかむんが、それらはLatestLoginによって順序付けされていません。任意のアイデア?

役に立ちましたか?

解決

私はそれは奇妙に聞こえるかもしれ知っているが、解決策は、行を変更することがあります:

.AddOrder(() => friendAlias.LatestLogin, Order.Desc)

.AddOrder(() => personAlias.LatestLogin, Order.Desc)

あなたはこれが最初で明らかに必要とされない理由を理解するために、周りにそれを他の方法を参照してくださいする必要があります。

あなたはIDと同じ '親' 友(friendAlias)を持つPersonオブジェクト(personAlias)を要求している== person.ID(.Addた(p => p.ID == person.ID))ので、あなたがする必要がありますfriendAlias.LatestLogin personAlias.LatestLoginによるとNOT並べ替えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top