7
¿Cómo expreso en QueryDSL cláusula where en forma:simple (E1 y E2) O (E3 y E4) expresión en QueryDSL
WHERE (E1 AND E2) OR (E3 AND E4)
E1..E4 son expresiones booleanas arbitrarias. El punto es tener una consulta iniciada entre paréntesis, por lo tanto (E1 y E2).
Es cierto que esta es la fórmula lógica equivalente a la anterior, pero no es lo mismo. ¿Qué pasa si quiero generar una declaración SQL que comienza con paréntesis, aunque es lógicamente equivalente a la fórmula sin ellos? – csviri
Querydsl garantiza que las expresiones se serializan de manera correcta en SQL, por lo que no tiene que preocuparse por la paranthesis –
"No tengo que preocuparme" suena un poco complicado para mí. Nunca sé si 'where (e1.o (e2) .and (e3))' significa '(e1 o e2) y e3)' o 'e1 o (e2 y e3)'. Me sorprendió mucho que 'where (e1.or (e2) .and (e3.o (e4)))' produjera '(e1 o e2) y (e3 o e4)' que realmente quería. Pero, ¿cómo fue que el primer O pasó a estar entre paréntesis? ¿Basado en que? Hace '... y (e3.o (e4))' hace alguna diferencia a '... y (e3) .o (e4)' entonces? En general, revisamos nuestras consultas en el registro, pero me gustaría encontrar algo más concreto sobre esta serialización. – virgo47