2014-10-14 5 views
0

Итак, предположим, что у меня есть SQL-таблицу:Фильтрация по списку значений в службе OData

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

Я пытаюсь обернуть его с помощью Apache Olingo.

Можно ли выразить этот SQL-запрос в OData ??

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 предлагает использовать комбинацию и и ЛЮБЫЕ предикаты более или менее достигают такого же эффекта. Есть ли другой способ перевести вышеупомянутый SQL-запрос?

Спасибо!

+0

запроса на основе «эк» и «или» должно сработать. Это правильный синтаксис. Какую библиотеку вы используете для реализации вашего сервиса? –

+0

@YiDing см. Мой ответ ниже. – gdoron

ответ

2

Как Yi отметил, запрос это прекрасно, я полагаю, вы получите сообщение об ошибке, потому что вы использовали неправильный одинарные кавычки в последнем или заявление:

‘000027F7F21A6196' 
//^ 
+0

Ah d * mmit ... Хорошо, так ясно, пришло время получить хороший снимок эфиопского кофе hehehe. Благодаря! –