子级的 OData 过滤器并返回父级

Cha*_*aim 2 odata olingo

我正在开发一个由 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 类型(窄体)上的标头飞机,并包含子航空公司信息。

希望这可以帮助。