CMIS session.queryObjects 不返回方面

问题描述 投票:0回答:2

我编写了几个测试函数来说明问题(或者至少是一些我不理解的行为)。我只是在 Alfresco 4.2.e 社区存储库上执行一些基本的 CMIS 查询,但根据我使用的是 session.query() 还是 session.queryObjects(),我得到了一些意想不到的结果。具体来说,queryObjects 不返回自定义方面的属性。两者都返回良好的关系/关联。我做错了什么,还是这是一个错误?我正在使用 opencmis 0.10 和 CMIS 1.1 URL。

private static Collection<Document> testCmisObjectQuery(Session session) {
    List<Document> rv = new LinkedList<>();
    OperationContext opCon = session.createOperationContext();
    opCon.setLoadSecondaryTypeProperties(true);
    opCon.setIncludeRelationships(IncludeRelationships.BOTH);

    ItemIterable<CmisObject> cmisObjs = 
            session.queryObjects("D:af:insuringFormInstance", null, false, opCon);
    for (CmisObject o : cmisObjs) {
        Document d = (Document) o;
        rv.add(d);
        printDocProps(d);
    }
    return rv;
}

private static Collection<Document> testCmisQuery(Session session) {
    List<Document> rv = new LinkedList<>();
    String queryString = "SELECT cmis:objectId FROM af:insuringFormInstance";
    OperationContext opCon = session.createOperationContext();
    opCon.setIncludeRelationships(IncludeRelationships.SOURCE);
    ItemIterable<QueryResult> results = session.query(queryString, false);
    for (QueryResult qResult : results) {
        String objectId = qResult.getPropertyValueByQueryName("cmis:objectId");
        Document doc = (Document)   session.getObject(session.createObjectId(objectId),opCon);
        printDocProps(doc);
        rv.add(doc);
    }
    return rv;
}
java alfresco cmis opencmis apache-chemistry
2个回答
2
投票

看起来,您缺少一个连接,如

select d.*, o.* from cmis:document as d join cm:ownable as o on d.cmis:objectId = o.cmis:objectId

请参阅 https://wiki.alfresco.com/wiki/CMIS#Aspect_Query 了解更多详细信息。


0
投票

Document d = (Document) o;
之前,您可以使用
o = session.getObject(o.getId());
重新加载 cmisObject。 重新加载后,可以检索方面/次要类型。
这个对我有用。我正在使用 Chemistry 1.0.0、CMIS 版本 1.1 和浏览器绑定。

还有一个类似的问题: session.queryObjects 不支持辅助类型

© www.soinside.com 2019 - 2024. All rights reserved.