在OData服务中按值列表过滤

时间:2014-10-14 14:56:55

标签: java sql odata olingo

所以,假设我有一个SQL表:

create table Person(id varchar2(255) not null);

我正在尝试使用Apache Olingo包装它。

是否可以在OData中表达此SQL查询?

select * from Person where id in ('a1', 'a2', 'a3', ... 'an');

我的第一次尝试是使用多个OR过滤器,如下所示:

http://myserver:8080/odata/Person?$filter=(id eq '0000022AC58540EA') or (id eq '00001CD8D55ED552') or (id eq ‘000027F7F21A6196')

但是这给了我以下错误:

<error>
  <code/>
  <message xml:lang="en-US">
    Invalid filter expression: '(id eq '0000022AC58540EA') or (id eq '00001CD8D55ED552') or (id eq ‘000027F7F21A6196')'.
  </message>
</error>

This answer建议使用AND和ANY谓词的组合来或多或少地达到相同的效果。这是否有另一种翻译上述SQL查询的方法?

谢谢!

1 个答案:

答案 0 :(得分:2)

正如Yi评论的那样,查询完全正常,我相信你得到的错误是因为你在上一篇或陈述中使用了错误的单引号:

  ‘000027F7F21A6196'
//^