Apache CMIS: Resultado de la consulta de paginación

Recientemente, comencé a usar Apache CMIS y leí la documentación y los ejemplos oficiales. No he notado nada sobre los resultados de la consulta de paginación.

Hay un ejemplo que muestra cómo listar los elementos de la carpeta, configurando maxItemsPerPage usando operationContext, pero parece que operationContext se puede usar dentro del método 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();

Esto está bien cuando se trata de listar la carpeta u. Pero mi caso se trata de obtener resultados de una consulta de búsqueda personalizada. El enfoque básico es:

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

Este enfoque recuperará todos los documentos en un queryResult, pero me gustaría incluir startIndex y límite. La idea sería escribir algo como esto:

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

No estoy seguro de esta parte: getPage (límite). ¿Es este enfoque correcto para la paginación? También me gustaría recuperar el número total de elementos, para poder saber cómo configurar los elementos máximos en la cuadrícula donde se mostrarán mis elementos. Hay un método, pero algo extraño está escrito en los documentos, como a veces el repositorio no puede estar al tanto de los elementos máximos. Este es ese método:

results.getTotalNumItems();

He intentado algo como:

SELECT COUNT(*)...

pero eso no funcionó :)

Por favor, ¿podría darme algunos consejos sobre cómo realizar una paginación adecuada a partir de un resultado de la consulta?

Gracias por adelantado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta