在Querydsl中设置括号

问题描述 投票:1回答:1

如何在Querydsl中设置括号?如果我有一个复杂的布尔表达式,如

b1 and b2 and ((b3 or b4) and b5) and ((b6 and b7) or b8)

如果能像这个例子一样,得到一个嵌套布尔表达式的选择语句就更好了。使用Querydsl我得到的最好结果是

b1 and b2 and (b3 or b4 and b5) and (b5 and b6 or b7)

我的代码是这样的。

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(..))
java sql querydsl parentheses
1个回答
0
投票

QueryDSL生成的结果在逻辑上是等价的。

然而,如果你真的想要括号,QueryDSL有以下功能 WRAPPED 操作符,将一个表达式包装在括号内。

使用。

Expressions.predicate(Ops.WRAPPED, firstExpression.and(secondExpression))
© www.soinside.com 2019 - 2024. All rights reserved.