gpt4 book ai didi

odata - $expand 实体上的 SAP 网关 $filter

转载 作者:行者123 更新时间:2023-12-03 14:59:51 26 4
gpt4 key购买 nike

我看过两篇关于 URL 约定的帖子,但我的问题是针对 OData Web 服务假设的 SAP 网关实现的。尝试使用时 $filter结合 $expand我们收到错误消息:

Left hand expression of memberaccess operation has wrong cardinality

假设我有两个简单的实体:
Foo
* Key
- Value

Bar
* Key
* Id
- Value

Foo 与 Bar 有 1:n 关联.以下 URL 按预期工作。
/sap/opu/odata/sap/ZTEST_SRV/Foo?$expand=Bar

就像
/sap/opu/odata/sap/ZTEST_SRV/Foo?$filter=Key gt 10&$expand=Bar

尝试使用 $filter 时关于实体 Bar属性(property) Id我们收到错误信息。
/sap/opu/odata/sap/ZTEST_SRV/Foo?$filter=Key gt 10 and Bar/Id gt 2&$expand=Bar

是否可以使用 $filter用这种方式用SAP?相关文章如下。

ODATA / SAP Gateway: About Query with $filter and $expand simultaneously

Filter on Expanded entities in OData

最佳答案

我也面临类似的问题,有这个sap note:
https://apps.support.sap.com/sap/support/knowledge/en/3008698
笔记详细信息的副本:

开始注意

症状
添加过滤器后
$filter = To_Employees/Name eq 'Hugo' 到 Odata 服务,出现错误:
“memberaccess 运算符的左 watch 达式具有错误的基数(许多不允许)”

环境
SAP_GWFND 750

重现问题

Access the odata service: /sap/opu/odata/sap/API_XXX_SRV/Orgnization$select=Orgnization,to_Employees/Name&$expand=to_Employees&$filter=to_Employees/Name eq 'Hugo' 
There is an error: "Left hand expression of memberaccess operator has wrong cardinality (to many not allowed)"

原因
“memberaccess 运算符的左 watch 达式具有错误的基数(不允许很多)”表示“to_Employees”是一对多导航,并且不支持将其与过滤器表达式结合使用(例如
$filter = To_Employees/Name eq 'Hugo',
当“To_Employees”指向多个员工时)。
因此,整个请求无效。

解析度
删除过滤器,不要用过滤器 eq 组合到很多结果

笔记结束
我不喜欢提出的解决方案:)
我实现的解决方法是创建一个基数为 1:1 的实体,仅用于过滤。
在您的示例中,我假设您需要从 Foo 到 Bar 的关系的基数为 1:n,以便能够为找到的每个 Foo 接收多个 Bar 记录。如果 Foo 与 Bar 的关系为 1:1,您只需更改基数即可。如果您需要基数 1:n,您可以创建一个像 BarFilter 这样的实体,它与具有 1:1 基数的 Foo 相关。然后,您将能够毫无错误地执行此请求,并且可以接收过滤器以在您的后端系统上进行相应的查询。请求将类似于:
新的简单实体:
条形过滤器
  • key
  • 身份证

  • Foo 与新实体 BarFilter 具有 1:1 关联。
    要求:
    /sap/opu/odata/sap/ZTEST_SRV/Foo?$filter=Key gt 10 and BarFilter/Id gt 2&$expand=Bar
    我希望这很清楚并且对您有所帮助。
    我对这个话题很感兴趣,所以如果你发现一些有趣的东西,请分享它。
    周末愉快。
    干杯

    关于odata - $expand 实体上的 SAP 网关 $filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38437646/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com