Nhibernate - كيانات التحميل الحريصة والترحيل
-
30-09-2019 - |
سؤال
لديّ كيانان وفريق وموظف.
أريد الحصول على قائمة من الموظفين مع فرق محملة حريصة. يجب أن تضع القائمة.
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;
المحلول
أنت تحاول إعادة استخدام متغير المعايير الذي يحتوي بالفعل على عرض العد والقيمة المستقبلية المحددة. تحتاج إلى إنشاء معايير جديدة لاستعلامك الثاني.
لا تنتمي إلى StackOverflow