繁体   English   中英

Odata ClientEntity错误-预期的OData实体,找到了EntitySet

[英]Odata ClientEntity Error - Expected OData Entity, found EntitySet

我正在尝试使用Olingo连接到Odata v4服务,该服务已通过罗斯文(Northwind)示例进行了测试,并且可以在浏览器中获取产生的URI: 我总是得到以下

error:java.lang.IllegalArgumentException:org.apache.olingo.commons.api.serialization.ODataDeserializerException:
com.fasterxml.jackson.core.JsonParseException: Expected OData Entity, found
EntitySet.

ODataEntityRequest<ClientEntity> reqEntity = client.getRetrieveRequestFactory().getEntityRequest(entityURI);
                ODataRetrieveResponse<ClientEntity> entity = reqEntity.execute();
            ClientEntity ce = (ClientEntity)entity.getBody();

在最后一行,我得到了错误。

ClientEntity ce = (ClientEntity)entity.getBody();

此错误意味着您正在查询类似http://services.odata.org/V4/Northwind/Northwind.svc/Categories的集合URL。 对此的响应是EntitySet

但是,似乎您想要一个Entity 可以从类似http://services.odata.org/V4/Northwind/Northwind.svc/Categories(1)的URL获得,其中(1)对应于您要获取的Category的ID。

2种选择:

  • 如果需要单个Entity ,则创建一个适当的URI,例如ODataClientFactory.getClient().newURIBuilder("http://services.odata.org/V4/Northwind/Northwind.svc").appendEntitySetSegment("Categories").appendKeySegment(1).build()并对此执行请求(我认为您甚至可以跳过强制转换)
  • 如果需要EntitySet ,请针对您的uri进行getEntitySetRequest ,然后在execute()方法的结果上使用getBody().getEntities()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM