在我们的应用程序中,我们使用查询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]
如果不知道确切的表达方式,有没有办法做到这一点?