Так как мое предложение сработало для вас. Позвольте мне перефразировать комментарий как ответ.
К сожалению, невозможно фильтровать в расширенных объектах для конечных точек службы SAP OData V2. Резервной стратегией будет прямой запрос «отфильтрованного» элемента в коллекции сущностей ( leaf ) и выполнение дополнительных запросов OData для перехода к исходной сущности ( root ).
В вашем случае я бы порекомендовал запросить непосредственно для AddressEmailAddress
, чтобы разрешить BusinessPartnerAddress с помощью AddressId . Следующим шагом будет разрешение BusinessPartner
с помощью поля businessPartner , например,
public List<BusinessPartner> getBusinessPartnersByEmail(
@Nonnull BusinessPartnerService service,
@Nonnull String email
)
throws ODataException
{
List<AddressEmailAddress> emailAddresses = service
.getAllAddressEmailAddress()
.filter(AddressEmailAddress.SEARCH_EMAIL_ADDRESS.eq(email))
.execute();
List<BusinessPartnerAddress> addresses = new LinkedList<>();
for( AddressEmailAddress emailAddress : emailAddresses ) {
addresses.addAll(
service
.getAllBusinessPartnerAddress()
.filter(BusinessPartnerAddress.ADDRESS_ID.eq(emailAddress.getAddressID()))
.execute());
}
List<BusinessPartner> businessPartners = new LinkedList<>();
for( BusinessPartnerAddress address : addresses ) {
businessPartners.add(service.getBusinessPartnerByKey(address.getBusinessPartner()).execute());
}
return businessPartners;
}