2012-05-11 6 views

Respuesta

6
where(e1.and(e2).or(e3.and(e4))) 
+0

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

+0

Querydsl garantiza que las expresiones se serializan de manera correcta en SQL, por lo que no tiene que preocuparse por la paranthesis –

+2

"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

Cuestiones relacionadas