通过表达式的结果对QueryDSL进行过滤

时间:2019-12-02 08:27:03

标签: java querydsl

在我们的应用程序中,我们使用查询dsl来获取实体。我目前正在尝试创建一种通用方法来通过布尔表达式进行过滤。给定布尔表达式,我该如何过滤该表达式?

什么不起作用:


    @Override
    public Predicate getWhereClause(FilterKey filterKey) {
        return getBooleanExpression().eq(Boolean.parseBoolean(filterKey.getFilterValue()));
    }

    private BooleanExpression getBooleanExpression() {
        return (BooleanExpression)getFieldPath();
    }

例如,布尔表达式如下:QObject.someDate.gt(today)但是,在代码中我们当然不知道确切的表达式...将.eq()附加到“未知”表达式会使其抛出此错误:

 org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: > near line 3, column 37 [select count(object)
from com.example.ejb.api.entities.Object object
where object.someDate > ?1 = ?2]

如果不知道确切的表达方式,有没有办法做到这一点?

0 个答案:

没有答案