我正在開發一個由OData服務提供支持的搜索功能。它將返回一個或一個Header對象列表作爲結果。 我們需要搜索的許多字段不在標題對象中。它們只在子對象(導航屬性)中。 什麼是正確的方法能夠對子字段執行OData搜索並仍然返回父對象列表。用於兒童和歸還父母的OData篩選器
這與我期望能夠在標準SQL中作爲'存在'查詢所做的相似。
我使用Java-Apache Olingo作爲我的項目,但我相信這是一個普遍的OData問題。
我正在開發一個由OData服務提供支持的搜索功能。它將返回一個或一個Header對象列表作爲結果。 我們需要搜索的許多字段不在標題對象中。它們只在子對象(導航屬性)中。 什麼是正確的方法能夠對子字段執行OData搜索並仍然返回父對象列表。用於兒童和歸還父母的OData篩選器
這與我期望能夠在標準SQL中作爲'存在'查詢所做的相似。
我使用Java-Apache Olingo作爲我的項目,但我相信這是一個普遍的OData問題。
是的,這是完全可能的,只需在$ filter中包含子路徑即可。說我們有一個標題飛機和兒童航空公司
/飛機將列出所有飛機的所有航空公司 飛機?$過濾器=航空公司/代碼EQ「BA」將列出所有飛機BA僅
對於你第二次查詢,返回孩子和篩選父母... 不確定是否只是返回孩子 - 你可以做到這一點,如果你通過它的關鍵, 解決單親父母,例如 飛機(123)/航空公司 - 會發現飛機與關鍵123,並返回JUST航空公司兒童導航屬性信息
過濾器,幷包括多個標題,那麼我認爲你唯一的選擇是使用$ expand包括子信息與標題信息。 例如?
飛機$過濾=體形EQ「NB」 & $展開;航空公司 - 所以這個過濾器對類型NB(窄體)的頭架飛機,包括與它一起的孩子航空公司信息。
希望這會有所幫助。
如果它是關於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加入討論列表。
謝謝。這非常有幫助。但是,如果我可以返回子對象並對父對象進行過濾,我還在遊蕩 – Chaim