如何在Querydsl中设置括号?如果我有一个复杂的布尔表达式,例如
b1 and b2 and (b3 or b4 and b5) and (b5 and b6 or b7)
如本示例所示,获取一个嵌套布尔表达式的select语句会很好。我得到的Querydsl最好的结果是
BooleanExpression be = obj.v1.eq(key)
.and(obj.v2.eq(..))
.and(obj.v3.goe(..).or(obj.v3.loe(..)).and(obj.v4.eq(..))
.and(obj.v5.goe(..).and(obj.v5.loe(..)).or(obj.v5.goe(..))
我的代码看起来像这样:
def formatStringList(ls):
if len(ls) == 0:
return 'None'
elif len(ls) == 1:
return ls[0]
else:
return ', '.join(ls[:-1]) + ', and ' + ls[-1]
答案 0 :(得分:0)
QueryDSL生成的结果在逻辑上是等效的。
但是,如果您确实要在其中加括号,则QueryDSL的WRAPPED
运算符将表达式包装在括号内。
使用:
Expressions.predicate(Ops.WRAPPED, firstExpression.and(secondExpression))