我正在使用嵌套的 json liferay 来调用我的第一个实体,并为每个实体链接一个第二个实体。所以我遵循了关于此的liferay文档(https://help.liferay.com/hc/en-us/articles/360029317171-Invoking-Liferay-Services#nesting-requests):
这是我在 service.xml 中的两个实体:
<entity name="FieldDef" local-service="true" remote-service="true">
<column name="fieldId" type="long" primary="true" />
<column name="title" type="String" localized="true" />
<column name="baseId" type="long"/>
<finder name="BaseId" return-type="Collection">
<finder-column name="baseId"/>
</finder>
</entity>
<entity name="FieldValue" local-service="true" remote-service="true">
<column name="fieldValueId" type="long" primary="true"/>
<column name="code" type="String"/>
<column name="fieldId" type="long"/>
<finder name="FieldDef" return-type="Collection">
<finder-column name="fieldId"/>
</finder>
</entity>
然后我想使用嵌套请求来获得以下结果:
{
"baseId": "0",
"fieldId": "1",
"title": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root available-locales=\"fr_FR,en_GB,\" default-locale=\"en_GB\"><Title language-id=\"en_GB\">Test1</Title><Title language-id=\"fr_FR\">Test1</Title></root>",
"fieldValues": [
{
"code": "TRE",
"fieldId": "1",
"fieldValueId": "1"
},
{
"code": "OUT",
"fieldId": "1",
"fieldValueId": "2"
}
]
}
通过调用以下服务:
Liferay.Service(
{
'$fielddef = /fielddef/find-by-base-id': {
baseId: 0,
'$fieldvalues = /fieldvalue/find-by-field-def': {
'@fieldId': '$fielddef.fieldId'
}
}
},
function(response) {
console.log(response);
})
但不幸的是 fieldValues 字段永远不会出现在 json 响应中。
{
"baseId": "0",
"fieldId": "1",
"title": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root available-locales=\"fr_FR,en_GB,\" default-locale=\"en_GB\"><Title language-id=\"en_GB\">Test1</Title><Title language-id=\"fr_FR\">Test1</Title></root>"
}
调用的 2 个服务可以单独和一起正常工作(我已经通过调试 java 服务进行了检查)。
还有什么可做的吗?