如何使用 VDM queryhelper 基于 StructuredQuery 进行过滤

问题描述

我们有一个如下所示的 VDM 辅助类

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

helper.filter(FilterExpressionHelper<>); 

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

StructuredQuery structure

解决方法

编辑:实际上有一个方便的 API:

final StructuredQuery query;
final MmpurReqFluentHelper helper;

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

不应在 I changed the address but the zipcode and city and state are not getting changed API (StructuredQuery) 上使用来自 Generic OData Client API (MmpurReqFluentHelper) 的类。但是,您可以应用以下解决方法:

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 替换为相应的实体类型引用。