SAP Java SuccessFactors 实体上的 Cloud SDK 计数查询不起作用
SAP Java Cloud SDK count query on SuccessFactors entity is not working
SuccessFactors 实体上的计数查询不起作用,因为它要求 $top 大于 0,但 FluentHelperCount 的 count() 方法用 0 覆盖 $top。因此 SuccessFactors 拒绝调用并返回 400 错误。
这是我的代码(抛出异常):
long count = new UserFluentHelper(QueryUtils.getSFServicePath()).top(1).select(User.USER_ID).count()
.execute(QueryUtils.getSFDestination());
使用 Postman 执行查询,URL 由 count() 方法生成
构造查询时如有错误请指出
谢谢
首先,您能否详细说明一下您的 OData 查询的语义?您同时使用 $select
和 $count
。参考 $count
上的 OData spec 它 returns 一个普通数字。我不明白你 select 实体字段的意图是基于什么。
假设您只想对实体进行计数,忽略显示的查询中的额外 $select
,这里是 SAP Cloud SDK 中可用的替代代码片段。请注意,此 API 是实验性的。
final HttpDestination httpDestination = DestinationAccessor.getDestination("my-destination").asHttp();
final ODataRequestCount requestCount = new ODataRequestCount("/odata/v2", "User, "", ODataProtocol.V2);
final ODataRequestResultGeneric result =
requestCount.execute(HttpClientAccessor.getHttpClient(httpDestination));
final Long count = result.as(Long.class);
如果 FluentHelperCount
得到改进,我将更新此答案。
更新:从 Cloud SDK 3.29.1
开始,支持查询 $count
端点。
您可以更改代码以使用:
long count = new UserFluentHelper(QueryUtils.getSFServicePath())
.count()
.executeRequest(QueryUtils.getSFDestination());
executeRequest
方法将查询 $count
端点。相比之下,现在已弃用的 execute
方法仍将执行内联计数。
有关详细信息,请查看 release notes。
SuccessFactors 实体上的计数查询不起作用,因为它要求 $top 大于 0,但 FluentHelperCount 的 count() 方法用 0 覆盖 $top。因此 SuccessFactors 拒绝调用并返回 400 错误。
这是我的代码(抛出异常):
long count = new UserFluentHelper(QueryUtils.getSFServicePath()).top(1).select(User.USER_ID).count()
.execute(QueryUtils.getSFDestination());
使用 Postman 执行查询,URL 由 count() 方法生成
构造查询时如有错误请指出
谢谢
首先,您能否详细说明一下您的 OData 查询的语义?您同时使用 $select
和 $count
。参考 $count
上的 OData spec 它 returns 一个普通数字。我不明白你 select 实体字段的意图是基于什么。
假设您只想对实体进行计数,忽略显示的查询中的额外 $select
,这里是 SAP Cloud SDK 中可用的替代代码片段。请注意,此 API 是实验性的。
final HttpDestination httpDestination = DestinationAccessor.getDestination("my-destination").asHttp();
final ODataRequestCount requestCount = new ODataRequestCount("/odata/v2", "User, "", ODataProtocol.V2);
final ODataRequestResultGeneric result =
requestCount.execute(HttpClientAccessor.getHttpClient(httpDestination));
final Long count = result.as(Long.class);
如果 FluentHelperCount
得到改进,我将更新此答案。
更新:从 Cloud SDK 3.29.1
开始,支持查询 $count
端点。
您可以更改代码以使用:
long count = new UserFluentHelper(QueryUtils.getSFServicePath())
.count()
.executeRequest(QueryUtils.getSFDestination());
executeRequest
方法将查询 $count
端点。相比之下,现在已弃用的 execute
方法仍将执行内联计数。
有关详细信息,请查看 release notes。