0

두 팀, 팀 및 직원이 있습니다.Nhibernate - 페이징 및 열렬한 로딩 엔터티

나는 열심히로드 된 팀과 함께 직원 목록을 원합니다. 목록을 페이징해야합니다.

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; 

답변

2

당신은 이미 지정된 카운트 투사와 미래의 값을 갖는 조건 변수를 재사용하기 위해 노력하고 있습니다. 두 번째 쿼리에 대한 새 조건을 만들어야합니다.