Обновление:
Изначально я не понимал, что Successfactors предлагал эту функцию поверх протокола. Я могу придумать два возможных обходных пути:
- использование
new Filter
, например:
PerPerson.requestBuilder().getAll().top(20)
.select(
...
).filter(
new Filter('personalInfoNav/firstName', 'eq', 'MARCO')
)
...
Если это не сработает, вы можете вызвать
build
в построителе запросов вместо
execute
, что даст вам объект
ODataRequest
, из которого вы можете получить URL-адрес, которым затем придется манипулировать вручную. Тогда вы сможете использовать функцию
executeHttpRequest
для выполнения этого пользовательского объекта запроса в отношении пункта назначения.
Дайте мне знать, если один из них работает для вас!
Исходный ответ:
фильтрация по расширенным объектам в OData v2 возможна только в том случае, если отношение между двумя объектами равно 1: 1. В случае, если код будет выглядеть так:
PerPerson.requestBuilder().getAll().top(20)
.select(
PerPerson.DATE_OF_BIRTH,
PerPerson.PERSONAL_INFO_NAV.select(
PerPersonal.PERSON_ID_EXTERNAL,
PerPersonal.FIRST_NAME,
PerPersonal.LAST_NAME,
PerPersonal.GENDER
)
).filter(
PerPerson.PERSONAL_INFO_NAV.filter(
PerPersonal.FIRST_NAME.equals('MARCO')
))
...
Если, однако, отношение равно 1: n, фильтрация невозможна.
Надеюсь, это поможет!