سؤال

لديّ كيانان وفريق وموظف.

أريد الحصول على قائمة من الموظفين مع فرق محملة حريصة. يجب أن تضع القائمة.

public PagedList<Employee> GetAllEmployeesWithEagerLoadedTeams(int page, int pageSize)
{
    var criteria = GetSession()
        .CreateCriteria(typeof (Employee))
        .SetFetchMode(DomainModelHelper.GetAssociationEntityNameAsPlural(typeof (Team)),FetchMode.Eager);

    var totalCount = criteria
        .SetProjection(Projections.RowCount())
        .FutureValue<Int32>().Value;

    return criteria
        .SetFirstResult(page * pageSize)
        .SetMaxResults(pageSize)
        .Future<Employee>()
        .ToPagedList(page, pageSize, totalCount);
}

لماذا هذا لا يعمل؟

نتائج SQL:

SELECT count(*) as y0_ FROM [Employee] this_;

SELECT TOP 10 y0_ FROM (SELECT count(*) as y0_, 
    ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row FROM [Employee] this_) as query WHERE query.__hibernate_sort_row > 10 ORDER BY query.__hibernate_sort_row;
هل كانت مفيدة؟

المحلول

أنت تحاول إعادة استخدام متغير المعايير الذي يحتوي بالفعل على عرض العد والقيمة المستقبلية المحددة. تحتاج إلى إنشاء معايير جديدة لاستعلامك الثاني.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top