OData筛选子项和返回父项

时间:2015-06-04 15:39:36

标签: odata olingo

我正在开发一个由OData服务提供支持的搜索功能。它将返回一个或一个标题对象列表作为结果。 我们需要搜索的许多字段都不在标题对象中。它们仅在子对象(导航属性)中。 能够对子字段执行OData搜索并仍返回父对象列表的正确方法是什么。

这与我在标准SQL中作为“存在”查询所期望的类似。

我正在使用Java - Apache Olingo进行我的项目,但我相信这是一个普遍的OData问题。

2 个答案:

答案 0 :(得分:3)

是的,这是完全可能的,只需在$ filter

中包含子路径即可

e.g。说我们有一个标题飞机和儿童航空公司

/飞机将列出所有航空公司的所有飞机 飞机?$ filter =航空公司/代码eq'BA'将列出所有仅适用于BA的飞机

对于第二个查询,返回子项并过滤父项... 不确定是否只返回孩子 - 如果您通过其键解析为单个父母,则可以执行此操作 例如 飞机(123)/航空公司 - 会找到带钥匙123的飞机并返回航空公司儿童导航财产信息

过滤并包含多个标题,然后我认为您唯一的选择是使用$ expand来包含带有标题信息的子信息。 e.g。

飞机?$ filter = BodyType eq'NB'& $ expand =航空公司 - 所以这会过滤NB型(窄体)上的头部飞机,并包含儿童航空公司信息。

希望这有帮助。

答案 1 :(得分:1)

如果是关于OData protocl本身,则支持如下: 地址/城市eq'Redmond' 地址/城市'伦敦' (http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398301

当谈到Apache Olingo中的实现时,您可以在其邮件列表中提出问题:user@olingo.apache.org。您可以按http://olingo.apache.org/support.html加入讨论列表。