OData过滤查询

时间:2014-04-25 10:43:00

标签: odata odata4j

我有表DEPatientVisit和DEPhysician

我需要过滤基于数据的参数

2 个答案:

答案 0 :(得分:1)

OData v4引入了一个新的运营商' any',可以解决您的问题。您的请求网址如下:

~/FalconCPDataService.svc/DEPhysicians?$format=json&$expand=DEPatientVisits&$filter=DEPatientVisits/any(v:v/StimulatorGourpId+eq+guid%27F321EDAB-14C6-4FF2-9485-00ABD176EBC4%27)

有关详情,请参阅:http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html,第5.1.1.5.1节

答案 1 :(得分:1)

感谢您的邀请。

对于第一个查询,您的查询目标是DEPhysicians中的实体?还是DEPatientVisits?如果想在DEPhysicians中返回实体,但是内联展开导航属性DEPatientVisits,并希望在DEPatientVisits中使用StimulatorGourpId过滤实体。尝试:

localhost:33396/FalconCPDataService.svc/DEPhysicians?$format=json&$expand=DEPatientVisits($filter=StimulatorGourpId eq guid'27F321EDAB-14C6-4FF2-9485-00ABD176EBC4')

对于第二个查询,请尝试:

localhost:33396/FalconCPDataService.svc/DEPhysicians?$format=json&$select=FullName&$expand=DEPatientVisits($select=Diagnosis,VisitDate;$filter=VisitID eq guid'F321EDAB-14C6-4FF2-9485-00ABD176EBC4')

以上查询均遵循OData Protocol V4。 $ select和$ filter可以内联$ expand。但是,我不确定它是否在odata4j中实现。在示例服务中,以下是您可以参考的类似查询 http://odatae2etest.azurewebsites.net/javatest/DefaultService/Orders?$expand=OrderDetails($select=OrderID;$filter=ProductID%20eq%206)