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

您正在試圖重新使用已經有指定的計數投影和未來價值的標準變量。 您需要爲第二個查詢創建新條件。