7
Wie kann ich in QueryDSL ausdrücken where-Klausel in Form:Simple (E1 und E2) OR (E3 und E4) Ausdruck in QueryDSL
WHERE (E1 AND E2) OR (E3 AND E4)
E1..E4 beliebige Boolesche Ausdrücke sind. Der Punkt ist, eine Abfrage in Klammern zu starten, also (E1 UND E2).
Es ist wahr, dass dies gleichwertige logische Formel wie oben ist, aber nicht das Gleiche. Was ist, wenn ich eine SQL-Anweisung generieren möchte, die mit Klammern beginnt, obwohl sie ohne sie logisch der Formel entspricht? – csviri
Querydsl garantiert, dass Ausdrücke in der richtigen Weise zu SQL serialisiert werden, so dass Sie sich keine Sorgen um Paranthesis machen müssen. –
"Ich brauche mir keine Sorgen zu machen" klingt für mich ein bisschen knifflig. Ich weiß nie, ob 'wo (e1.oder (e2) .und (e3))' '(e1 oder e2) und e3)' oder 'e1 oder (e2 und e3)' bedeutet. Ich war wirklich überrascht, dass "where (e1.or (e2) .and (e3.or (e4)))" (e1 oder e2) und (e3 oder e4) "produziert", was ich eigentlich wollte. Aber wie war das erste ODER in Klammern? Basierend worauf? Machen '... und (e3.oder (e4))' 'einen Unterschied für ... und (e3) .oder (e4)' dann? Wir überprüfen im Allgemeinen unsere Abfragen im Protokoll, aber ich würde gerne etwas Konkreteres über diese Serialisierung finden. – virgo47