gpt4 book ai didi

java - 如何在querydsl查询中添加括号?

转载 作者:行者123 更新时间:2023-11-30 06:04:51 50 4
gpt4 key购买 nike

我正在使用 querydsl 进行 sql 选择。现在我有了要转换为 querydsl 的 native 查询。它由括号中的两个 OR 语句组成,后跟 AND 查询,从而适用于两个 OR 部分。

我需要以下内容:

((q1 AND q2) OR (q3 AND q4)) AND q5

在 querydsl 中我可以这样写:

boolean 表达式查询 = q1.and(q2).or(q3.and(q4)).and(q5)

但这不一样。我真正想要的是(注意括号):

boolean 表达式查询 = ((q1.and(q2)).or((q3.and(q4))).and(q5)

问题:如何在java中实现这个?我如何将这些括号逻辑地添加到 querydsl 表达式。

最佳答案

假设我们有三个 BooleanExpression,我们想表达 (q1 || q2) && q3

如果您编写 q1.or(q2).and(q3),则 and 语句是顶级操作数并且 q1.or(q2 ) 首先求值,然后用作表达式的左侧。这是因为操作是按照它们出现的顺序进行评估的。请记住,这是 Java 语法。因此,使用该语句是有效的。

但是,如果您不喜欢这种表示法,另一种方法是简单地编写以下内容:

q3.and(q1.or(q2)); 

参见 these examples了解更多信息。

关于java - 如何在querydsl查询中添加括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48400869/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com