gpt4 book ai didi

java - 使用 SAP Cloud SDK 对扩展实体执行过滤

转载 作者:行者123 更新时间:2023-11-30 05:38:40 25 4
gpt4 key购买 nike

所以这可能是一个简单的问题,但我不知何故无法理解它。我正在尝试使用 SAP Cloud SDK 通过电子邮件地址查找业务合作伙伴。

这是我到目前为止所拥有的:

final List<BusinessPartner> businessPartners = new DefaultBusinessPartnerService()
.getAllBusinessPartner()
.select(BusinessPartner.BUSINESS_PARTNER,
BusinessPartner.TO_BUSINESS_PARTNER_ADDRESS
.select(BusinessPartnerAddress.TO_EMAIL_ADDRESS
.select(AddressEmailAddress.SEARCH_EMAIL_ADDRESS)))
.filter(AddressEmailAddress.SEARCH_EMAIL_ADDRESS.eq(email)) //something like this?
.top(10)
.execute();

现在,如何对扩展实体AddressEmailAddress执行过滤操作?我想出的那个显然不是。我在使用 Fluent API 导航到扩展实体时遇到问题。

有什么想法吗?

最佳答案

因为我的建议对你有用。让我将评论改写为答案。

不幸的是,无法过滤 SAP OData V2 服务端点的扩展实体。后备策略是直接查询实体集合()中的“已过滤”项,并运行其他 OData 请求来遍历原始实体()。

就您的情况而言,我建议直接查询AddressEmailAddress,以通过AddressId解析BusinessPartnerAddress。下一步是通过 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;
}

关于java - 使用 SAP Cloud SDK 对扩展实体执行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56144905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com