对于基于权限的记录的一些基本过滤,我正在创建相同接口的多个实现,每个实现可以提供用于构建查询的过滤/约束。每个实现的响应是AND
-combined(anyOf
)与其他一些条件,然后所有这些都是OR
-combined(allOf
)。
其中一个实现可能会返回如下内容:QComment.comment.author.eq(user)
。但是,其中一些实现只是想表示访问被完全拒绝(“false
”)或允许(“true
”)。
这个问题不是关于我的业务逻辑,这就是为什么我掩饰它,但重点是:
我想返回一个BooleanExpression
,评估为false
,resp。 true
。
我想出了以下内容:
BooleanExpression FALSE_CLAUSE = Expressions.FALSE.ne(Expressions.FALSE);
BooleanExpression TRUE_CLAUSE = Expressions.TRUE.eq(Expressions.TRUE);
虽然这很有效,但看起来相当丑陋。 Querydsl有更好的方法吗?我期待着BooleanExpression.FALSE
和BooleanExpression.TRUE
。惊讶找不到那些。
我没有发现这一点同样感到惊讶。唯一的改进是
BooleanExpression FALSE_CLAUSE = Expressions.FALSE.isTrue();
BooleanExpression TRUE_CLAUSE = Expressions.TRUE.isTrue();
(这是上述方法的实现)