为了账号安全,请及时绑定邮箱和手机立即绑定

使用 SAP Cloud SDK 对扩展实体执行筛选

使用 SAP Cloud SDK 对扩展实体执行筛选

慕桂英4014372 2022-11-30 11:15:16
所以这可能很简单,但我不知何故无法理解它。我正在尝试使用 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?我想出的那个显然没有。我在使用流畅的 API 导航到扩展实体时遇到问题。有任何想法吗?
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

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


不幸的是,无法过滤SAP OData V2 服务端点的扩展实体。回退策略是直接查询实体集合 ( leaf ) 中的“已过滤”项目并运行额外的 OData 请求以遍历到您的原始实体 ( root )。


在您的情况下,我建议直接查询, 以通过AddressIdAddressEmailAddress解析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;

}


查看完整回答
反对 回复 2022-11-30
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信