Frage

Ich habe zwei Entitäten, ein Team und einen Mitarbeiter.

Ich möchte eine Liste der Mitarbeiter mit dem eifrigen geladenen Teams bekommen. Die Liste wird ausgelagert werden.

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);
}

Warum dies nicht funktioniert?

SQL Ergebnisse:

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;
War es hilfreich?

Lösung

Sie versuchen die Kriterien Variable wieder zu verwenden, die bereits die Zählung Projektion und zukünftigen Wert angegeben hat. Sie müssen eine neue Kriterien für Ihre zweite Abfrage erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top