【问题标题】:How to filter based on a StructuredQuery using VDM queryhelper如何使用 VDM 查询助手基于结构化查询进行过滤
【发布时间】:2021-07-13 09:30:27
【问题描述】:

我们有一个如下的 VDM 助手类

MmpurReqFluentHelper helper = (MmpurReqFluentHelper) valueHelpService.getAllMmpurReq();

helper.filter(FilterExpressionHelper<>); 

我们如何将给定的包含过滤器(图片中附加的结构)的 StructuredQuery 转换为上面行中给出的帮助器类所需的 FilterExpressionHelper?

【问题讨论】:

    标签: sap-cloud-sdk


    【解决方案1】:

    编辑:其实有一个方便的 API:

    final StructuredQuery query;
    final MmpurReqFluentHelper helper;
    
    ValueBoolean filter = query.getFilters().stream().reduce(ValueBoolean::and).orElse(null);
    helper.filter(new UncheckedFilterExpression<>(filter));
    

    预计不会在 OData V2/V4 VDM API (MmpurReqFluentHelper) 上使用来自 Generic OData Client API (StructuredQuery) 的类。但是,您可以应用以下解决方法:

    final StructuredQuery query;
    final MmpurReqFluentHelper helper;
    
    helper.filter(new FilterExpressionHelper<EntityT>() {
        @Override
        @Nullable
        FilterExpression toLegacyFilterExpression() {
            throw new IllegalStateException();
        }
        @Override
        @Nullable
        ValueBoolean toClientFilterExpression() {
            return query.getFilters().stream().reduce(ValueBoolean::and).orElse(null);
        }
    });
    

    请将EntityT 替换为相应的实体类型引用。

    【讨论】:

    • 考虑将编辑移到顶部以获得可见性;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多