最近我已经开始使用Apache CMIS并阅读官方文档和示例。我没有注意到任何关于分页查询结果。Apache CMIS:寻呼查询结果
有展示如何列出文件夹中的项目,使用的OperationContext设置maxItemsPerPage一个例子,但似乎的OperationContext可以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();
这是确定的,当涉及到上市ü文件夹。但我的情况是关于从自定义搜索查询中获取结果。基本的做法是:
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));
}
这种方法将检索queryResult中的所有文件,但我想包括startIndex和limit。这个想法是键入这样的东西:
ItemIterable<QueryResult> results = session.query(queryString, false).skipTo(startIndex).getPage(limit);
我不知道这部分:getPage(限制)。这是寻呼的正确方法吗?此外,我想检索项目总数,所以我可以知道如何设置我的项目将显示在网格中的最大项目。有一种方法,但有些奇怪的东西是用文档编写的,就像仓库不知道最大项目一样。这是一个方法:
results.getTotalNumItems();
我已经试过类似:
SELECT COUNT(*)...
,但没有这样的伎俩:)
请,你能不能给我一些建议怎么办从查询结果中正确分页?
在此先感谢。
非常感谢您的解释。 – Banana