Итак, предположим, что у меня есть 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-запрос?
Спасибо!
запроса на основе «эк» и «или» должно сработать. Это правильный синтаксис. Какую библиотеку вы используете для реализации вашего сервиса? –
@YiDing см. Мой ответ ниже. – gdoron