我正在开发一个由 OData 服务支持的搜索功能。它将返回一个或一组标头对象作为结果。我们需要搜索的许多字段并不在 Header 对象中。它们仅存在于子对象(导航属性)中。能够对子字段执行 OData 搜索并仍然返回父对象列表的正确方法是什么。
这与我期望能够在标准 SQL 中作为“存在”查询执行的操作类似。
我在我的项目中使用 Java - Apache Olingo,但我相信这是一个一般的 OData 问题。
小智 7
是的,这是完全可能的,只需将子路径包含在 $filter 中即可
例如,假设我们有一个标题 Aircraft 和子 Airline
/Aircraft 将列出所有航空公司的所有飞机?$filter=Airline/Code eq 'BA' 将仅列出 BA 的所有飞机
对于您的第二个查询,返回子项并过滤父项...不确定是否仅返回子项 - 如果您通过其键解析为单个父项,例如 Aircraft(123)/Airline - 会找到,则可以执行此操作带有密钥 123 的飞机并仅返回航空公司子导航属性信息
要过滤并包含多个标头,那么我认为您唯一的选择是使用 $expand 将子信息包含在标头信息中。例如
Aircraft?$filter=BodyType eq 'NB'&$expand=Airline - 因此这会过滤 NB 类型(窄体)上的标头飞机,并包含子航空公司信息。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
11213 次 |
| 最近记录: |