2010-09-16 4 views
1

AppEngineConsumerExample odata4j демонстрирует, как фильтровать объекты на строковые и числовые значения с кодом, подобную следующей:Как фильтровать объекты по диапазону дат в odata4j?

reportEntity("\nNon-discontinued product with reorderLevel > 25 (two filter predicates): " , 
      c.getEntities("Product") 
      .filter("reorderLevel gt 25 and discontinued eq false") 
      .top(1) 
      .execute().first()); 

Я довольно новыми для Java (мой фон .NET/C#), но выше, делает смысл. Однако я не уверен, как сделать что-то подобное для дат. Даты, исходящие из моего сервиса WCF OData, отформатированы как «yyyy-MM-dd'T'HH: mm: ss».

Заранее благодарим за вашу помощь!

ответ

2

Оказывается, это функция самой OData, а не odata4j. Строка, переданная функции фильтра в odata4j, является тем же самым выражением, которое будет передаваться через URL-адрес. Я нашел массу примеров фильтров на Netflix OData Catalog page.

Чтобы отфильтровать даты, использовать что-то вроде этого:

reportEntity("\nProduct with order date greater than March 1, 2010: " , 
     c.getEntities("Product") 
     .filter("OrderDate gt datetime'2010-03-01'") 
     .top(1) 
     .execute().first()); 
+0

Рад слышать, что ты получил эту работу. Кажется, что синтаксис для предоставления литерала параметров был бы полезен здесь. Или построитель запросов api. Как вы думаете? –