Как расширить данные OptionSet из Microsoft Dynamics с помощью Apache Olingo? - PullRequest
0 голосов
/ 08 октября 2018

Я использую Apache olingo v4 для загрузки данных Microsoft Dynamics.Я пытаюсь получить метаданные объекта с атрибутами, расширенными вместе с набором параметров (если атрибут имеет тип «Список выбора»).

Вот пример кода, который я пробовал:

URIBuilder absoluteUri = client.newURIBuilder("<URL>").appendEntitySetSegment("EntityDefinitions");
absoluteUri.filter("LogicalName eq 'account'");            
absoluteUri.expand("Attributes($expand=OptionSet)");
URI uri = absoluteUri.build();
ODataRawRequest request = client.getRetrieveRequestFactory().getRawRequest(absoluteUri);
request.setAccept("application/json;odata.metadata=full");
ODataRawResponse response = request.execute();
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> result = mapper.readValue(response.getRawResponse(), new TypeReference<Map<String, Object>>(){});
return mapper.convertValue(result.get("value"), new TypeReference<List<Map<String,Object>>>(){});

Когда я запускаю это, я получаю следующую ошибку:

org.apache.olingo.client.api.communication.ODataClientErrorException: (0x0) Could not find a property named 'OptionSet' on type 'Microsoft.Dynamics.CRM.AttributeMetadata'."Could not find a property named 'OptionSet' on type 'Microsoft.Dynamics.CRM.AttributeMetadata'." [HTTP/1.1 400 Bad Request]

Как мне сделать это с Olingo?Если мне нужно сделать это через почтальона, я могу просто нажать этот URL

 GET [Organization URI]/api/data/v9.0/EntityDefinitions(LogicalName='account')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$expand=OptionSet

Обновление: я отредактировал 3-ю строку ниже:

absoluteUri.expand ("Атрибуты / Microsoft.Dynamics".CRM.PicklistAttributeMetadata ($ expand = OptionSet) ");

Получена следующая ошибка:

org.apache.olingo.client.api.communication.ODataClientErrorException: (0x0) Found a path traversing multiple navigation properties. Please rephrase the query such that each expand path contains only type segments and navigation properties."Found a path traversing multiple navigation properties. Please rephrase the query such that each expand path contains only type segments and navigation properties." [HTTP/1.1 400 Bad Request]

1 Ответ

0 голосов
/ 12 октября 2018

Возможно, вам следует обновить третьи строки, как показано ниже:

absoluteUri.expand("Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata($expand=OptionSet)");

Сообщение об ошибке гласит Microsoft.Dynamics.CRM.AttributeMetadata не PicklistAttributeMetadata

...