Ebean mit ODER Abfrage
Ich versuche eine Abfrage machen wo ich will, um zu prüfen, ob entweder die email oder der name eines Benutzers startet mit einer angegebenen Zeichenfolge. In einer sql-Abfrage, die ich schreiben würde mit
name like 'queryString%' or email like 'queryString%'
In ebean-Abfrage, die ich erwarten würde, etwas zu schreiben wie:
find.where().or(like('name', 'queryString%'), like('email', 'queryString%'));
Das problem ist, dass der oder ein Ausdruck, nicht eine expressionlist, das ist es, was ich beim schreiben
find.where().like(...,...)
Wie ich es verstehe, mache eine Abfrage wie diese:
find.where().like(.., ...).like(..., ...)
ist mit UND.
Wie kann ich schreiben, wie eine Abfrage mit ebean?
Dank!
InformationsquelleAutor Runar Halse | 2012-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem zweiten Versuch ist fast OK, Sie haben nur
com.avaje.ebean.Expr.like()
innerhalb deror()
natürlich können Sie einen import für kürzere code::
Überprüfen Sie die API im Javadoc: http://www.avaje.org/static/javadoc/pub/com/avaje/ebean/Expr.html
Ich eingefügten link zu javadocs - nützlich sein kann 🙂
Ihr Beispiel zeigt zwei alternativen. Wie hast du mehr als 2 Sachen???
Ich fürchte, dass der einzig sinnvolle Weg ist das erstellen von Abfragen mit avaje.org/static/javadoc/pub/com/avaje/ebean/RawSql.html - es ist nicht so komfortabel, wie gemeinsame Finder, aber es ist ziemlich flexibel. Sonst müssten Sie wickeln
or
mitor
mitor
Im Falle dass, wenn Sie vollständig dynamische Menge von Bedingungen überprüfen, Verpackungor
Ausdrücke macht keinen Sinn.Dank biesior, das ist, was ich am Ende machen.
InformationsquelleAutor biesior
Beachten Sie, dass Sie können auch verwenden, fluid-Stil über Disjunktion(), Konjunktion() und endJunction().
Beispiel:
Und ein Beispiel für die Verwendung von Typ-sicher-Abfrage Bohnen ist es ähnlich, aber stattdessen verwendet, oder(), und(), endAnd(), endOr() ... eher als Disjunktion()/Verbindung() etc.
InformationsquelleAutor Rob Bygrave
Beachten Sie, dass die Abfrage geschrieben werden kann in der fluid-Stil mit Disjunktion():
Wenn es ist mehr, dass eine Disjunktion() /Verbindung (), dann verwenden Sie
endJunction()
zu Ende, ODER und UND Gruppe.In dem Beispiel gibt es nur eine einzige ODER eine Gruppe erforderlich, so
endJunction()
ist nicht erforderlich.disjunction()
undconjunction()
gibt viel mehr Flexibilität, alsor()
oderand()
vor allem, wenn es Anforderung für die Verwendung von mehr als 2 Ausdrücke in jedem.InformationsquelleAutor Rob Bygrave
über mehr dann 2 ODER WIE, Sie können versuchen, diese...
InformationsquelleAutor 李政忠