2017-03-05 8 views
1

Ich verwende this Methode für die Verwendung von Spezifikationen kommen mit Abfrageparameter, um dynamische Abfrage zu generieren. es funktioniert gut. aber auf diese Weise kann ich einfach .and() oder .or() verwenden.Spring Data: Komplizierte Abfragen mit der Spezifikation

meine Frage ist, was ist die beste Praxis für die Handhabung komplizierter Abfragen wie where ((a & b)|(c & d) & (x)) mit Spezifikation mit dynamischer Eingabe?

Antwort

0

Wenn Sie dynamische Abfragen erstellen möchten (wenn Sie nicht wissen, wie viele Elemente Sie in Ihrem oder/und haben), ist die beste Lösung dafür, eine Builder-Klasse zum Generieren von Abfragen zu erstellen. Im Beispiel: SpecificationBuilder von meinem GitHub.

Wenn Sie wissen, wie viele Elemente, die Sie haben empfehle ich Ihnen zu bedienen Spezifikation wie (nur Beispiel):

(root, query, builder) -> { 
    return builder.and(
     builder.equal(root.get("id"), "1"), 
     builder.equal(root.get("name"), "name"), 
     builder.or(
      builder.equal(root.get("id"), "2"), 
      builder.equal(root.get("name"), "enam") 
     ) 
    ); 
} 
Verwandte Themen