2015-06-04 61 views
1

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

这与我期望能够在标准SQL中作为'存在'查询所做的相似。

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

回答

2

是的,这是完全可能的,只需在$ filter中包含子路径即可。说我们有一个标题飞机和儿童航空公司

/飞机将列出所有飞机的所有航空公司 飞机?$过滤器=航空公司/代码EQ“BA”将列出所有飞机BA仅

对于你第二次查询,返回孩子和筛选父母... 不确定是否只是返回孩子 - 你可以做到这一点,如果你通过它的关键, 解决单亲父母,例如 飞机(123)/航空公司 - 会发现飞机与关键123,并返回JUST航空公司儿童导航属性信息

过滤器,并包括多个标题,那么我认为你唯一的选择是使用$ expand包括子信息与标题信息。 例如?

飞机$过滤=体形EQ“NB” & $展开;航空公司 - 所以这个过滤器对类型NB(窄体)的头架飞机,包括与它一起的孩子航空公司信息。

希望这会有所帮助。

1

如果它是关于OData的通讯协定本身,这是支持的,如: 地址/城市EQ“微软” 地址/城市NE“伦敦” (http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398301

当涉及到阿帕奇Olingo实施

,您可以在其邮件列表中提问:[email protected]。您可以按照http://olingo.apache.org/support.html加入讨论列表。

+0

谢谢。这非常有帮助。但是,如果我可以返回子对象并对父对象进行过滤,我还在游荡 – Chaim