如何通过Java SDK以主键定位OData实体并生成指定格式URL?
解决方案
完全可以用Java SDK实现你要的URL格式,不需要自行构建HTTP客户端。问题出在你当前用的是集合查询写法,SDK默认会生成$filter参数;改用主键定位实体的API就能生成目标格式的URL。
具体实现方式
OData Java SDK(比如SAP Cloud SDK、OData V4官方SDK)都提供了getByKey方法,专门用于通过主键直接定位单个实体,再结合关联属性的访问,就能生成你需要的路径:
// 1. 通过主键获取myEntity的引用,传入两个主键值(key1和key2) MyEntity entityRef = MyEntity.getByKey("12345", LocalDate.of(2022, 2, 1)).build(); // 2. 直接访问Results关联,发起请求获取结果 List<MySecondEntity> results = entityRef.results().executeRequest(yourServiceInstance);
或者用链式调用简化:
List<MySecondEntity> results = MyEntity.getByKey("12345", LocalDate.of(2022, 2, 1)) .results() .executeRequest(yourServiceInstance);
为什么这个写法能生成目标URL
getByKey方法会构造出myEntity(key1='12345',key2=datetime'2022-02-01')的实体定位路径,而非用$filter过滤集合- 直接调用
.results()会在路径后追加/Results,最终生成的URL完全符合你在GW客户端中使用的格式,不需要额外的$expand参数
内容的提问来源于stack exchange,提问作者Tobias
相关产品推荐
相关产品推荐

