当前位置: 首页 > 知识库问答 >
问题:

如何在QueryDSL中为查询添加括号?

伊飞光
2023-03-14

我使用querydsl作为sql选择。现在有了要转换为QueryDSL的本机查询。它由括号中的两个OR语句组成,后跟一个应用于两个OR部分的and和查询。

我需要以下内容:

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

在querydsl中,我可以编写以下示例:

共有1个答案

钦良弼
2023-03-14

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

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

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

q3.and(q1.or(q2)); 
 类似资料:
  • 我使用的是Spring Data JPA 1.7.1 这里有一个例子:

  • 我正在解决一个使用QueryDSL构造查询语句的java应用程序的性能问题。在与DBA合作后,有人建议我在查询中添加以下语句: 当前,我们正在执行查询,如下所示: 提前道谢。

  • 问题内容: 我正在使用QueryDSL构建SQL查询,该查询包含以联合身份加入的多个子查询。这是我查询的基础: 然后,我有几个子查询来获取与事务关联的客户端名称。我将示例缩减为两个: 如何将它们结合在一起,并通过我的主要查询加入结合?这是我目前的尝试: 这样可以编译,但是在尝试运行时会在运行时生成无效的SQL 。可能的错误: 子查询联合的语法。 命名子查询结果列的表达式与中使用的路径表达式之间的连

  • 2013年,根据@Timo Westkämper(参见QueryDSL-Add subquery into FROM语句),可以在FROM子句中包含子查询。现在看来这已经不可能了,因为JPQL规范不允许这样做: (https://docs.oracle.com/cd/e12839_01/apirefs.1111/e13946/ejb3_langref.html#ejb3_langref_subqu

  • 问题内容: 我在Access 2013的数据库中有一个表。 我希望在它们旁边添加Rowid号: 问题答案: 一种方法是在子查询中使用该函数。不确定它的伸缩性是否合适,可能还有更好的方法…

  • 我用的是Jooq3.10。我想为每个选择、更新和删除查询添加具有动态值的默认条件。 例1: 我如何做到这一点?