문제

나는 엔터티 '사람'이 있습니다.

나는 최신 로그로 주문한 특정 사람의 첫 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>();
    }

모든 사용자 친구를 사귀지 만 최신 로그로 주문되지는 않습니다. 어떤 아이디어?

도움이 되었습니까?

해결책

나는 그것이 이상하게 들릴지 모르지만 해결책은 선을 변경하는 것입니다.

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

와 함께:

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

왜 이것이 필요한지, 처음에는 분명하지 않은 이유를 이해하기 위해 다른 방법으로 그것을 봐야합니다.

id == person.id (.add (p => p.id == person.id))와 동일한 '부모'친구 (friendalias)를 가진 사람 대상 (Personalias)을 요청하고 있습니다. personalias.latestlogin은 친구가 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top