Apache CMIS: wynik zapytania stronicowania

Ostatnio zacząłem używać Apache CMIS i przeczytać oficjalną dokumentację i przykłady. Nie zauważyłem niczego o wynikach wyszukiwania stronicowania.

Istnieje przykład pokazujący, jak wyświetlić elementy folderów, ustawiając maxItemsPerPage przy użyciu operationContext, ale wygląda na to, że operationContext może być użyty wewnątrz metody getChilder:

int maxItemsPerPage = 5;
int skipCount = 10;
CmisObject object = session.getObject(session.createObjectId(folderId));
Folder folder = (Folder) object;
OperationContext operationContext = session.createOperationContext();
operationContext.setMaxItemsPerPage(maxItemsPerPage);
ItemIterable<CmisObject> children = folder.getChildren(operationContext);
ItemIterable<CmisObject> page = children.skipTo(skipCount).getPage();

To jest ok, jeśli chodzi o wyświetlanie folderu u. Ale mój przypadek dotyczy uzyskiwania wyników z niestandardowego zapytania wyszukiwania. Podstawowe podejście to:

String myType = "my:documentType";
ObjectType type = session.getTypeDefinition(myType);
PropertyDefinition<?> objectIdPropDef = type.getPropertyDefinitions().get(PropertyIds.OBJECT_ID);
String objectIdQueryName = objectIdPropDef.getQueryName();
String queryString = "SELECT " + objectIdQueryName + " FROM " + type.getQueryName();
ItemIterable<QueryResult> results = session.query(queryString, false);
for (QueryResult qResult : results) {
    String objectId = qResult.getPropertyValueByQueryName(objectIdQueryName);
    Document doc = (Document) session.getObject(session.createObjectId(objectId));
}

Podejście to pobierze wszystkie dokumenty w queryResult, ale chciałbym dołączyć startIndex i limit. Pomysł polega na wpisaniu czegoś takiego:

ItemIterable<QueryResult> results = session.query(queryString, false).skipTo(startIndex).getPage(limit);

Nie jestem pewien co do tej części: getPage (limit). Czy to właściwe podejście do stronicowania? Chciałbym również pobrać całkowitą liczbę przedmiotów, dzięki czemu mogłem wiedzieć, jak ustawić maksymalne przedmioty w siatce, w której będą pokazywane moje przedmioty. Istnieje metoda, ale w dokumentach jest coś dziwnego, jak czasami repozytorium nie może być świadome maksymalnych elementów. To jest ta metoda:

results.getTotalNumItems();

Próbowałem czegoś takiego:

SELECT COUNT(*)...

ale to nie zadziałało :)

Czy mógłbyś dać mi kilka wskazówek, jak wykonać prawidłowe stronicowanie z wyniku zapytania?

Z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion