我想使用 nuxeo 8.10 从我的 Java 应用程序中获取具有“动态”属性的请求。
我的 NuxeoDocument 有 declalation:
<schema name="TestDocumentProperties" src="data/TestDocumentProperties.xsd" prefix="test" />
<doctype name="TestDocument" extends="Document">
<schema name="dublincore"/>
<schema name="TestDocumentProperties"/>
</doctype>
有架构:
<xs:schema ...>
<xs:element name="summary" type="xs:string"/>
<xs:element name="content" type="xs:string"/>
</xs:schema>
我的 Nuxeo 服务器有一个“获取”请求:
https:xxx/nuxeo/site/api/v1/search/lang/NXQL/execute?query=SELECT * FROM Document WHERE ecm:fulltext = 'test'&properties=TestDocumentProperties, dublincore
当我直接从浏览器执行此请求时,结果包含“dublincore”和“TestDocumentProperties”的所有属性:
{
"entity-type": "document",
"type": "TestDocument",
...
"properties": {
"test:summary": "test text to search in summary",
"test:content": "test text to search in content",
"dc:description": null,
"dc:language": null,
"dc:coverage": null,
"dc:valid": null,
"dc:creator": "xxx",
"dc:modified": "2017-12-13T16:28:38.44Z",
...
},...
}
所以,我想用相同的参数从我的 Java 应用程序执行一个 nuxeo nxql 请求。之前,我只执行来自我的 java 应用程序的请求,没有使用此代码的“properties”参数:
return this.nuxeoClient.repository().query("SELECT * FROM Document WHERE ecm:fulltext = 'test'");
但是使用存储库中的“查询”方法,无法指定要获取的属性。所以,今天,我尝试使用以下代码:
Map<String, Object> parameters = new HashMap<>();
parameters.put("query", "SELECT * FROM Document WHERE ecm:fulltext = 'test'");
parameters.put("properties", "TestDocumentProperties, dublincore");
return this.nuxeoClient.automation("Repository.Query").parameters(parameters).execute();
不幸的是,结果没有正确获取,我的响应中没有“dublincore”属性,但我有“TestDocumentProperties”。如果我在获取属性参数列表中删除“TestDocumentProperties”,则响应没有变化......
你能帮我更正这段代码或告诉我一个替代方案吗?
谢谢