QueryDSL中的简单(E1和E2)OR(E3和E4)表达式

csv*_*iri 8 querydsl

我如何在QueryDSL中表达where子句:

 WHERE (E1 AND E2) OR (E3 AND E4) 
Run Code Online (Sandbox Code Playgroud)

E1..E4是任意布尔表达式.关键是在括号内开始查询,因此(E1和E2).

pon*_*zao 10

where(e1.and(e2).or(e3.and(e4)))
Run Code Online (Sandbox Code Playgroud)

  • @TimoWestkämper当我这样做时,我遇到了问题.通过我的调试器,生成的jpa QL显示为"a和b或c和d".我想要"(a和b)或(c和d)"括号缺失.QueryDSL 3.6.3. (4认同)
  • "我不需要担心"对我来说听起来有点棘手.我永远不知道`where(e1.or(e2).and(e3))`是指`(e1或e2)和e3)`或`e1或(e2和e3)`.我真的很惊讶`哪里(e1.or(e2).和(e3.or(e4)))`产生了`(e1或e2)和(e3或e4)`我真正想要的.但是,第一个OR是如何在括号中出现的?基于什么?`...和(e3.or(e4))`对`...和(e3).或(e4)`有什么不同呢?我们通常在日志中查看我们的查询,但我很想找到关于此序列化的更具体的内容. (2认同)