grails-Liste und createCriteria()
Ich habe eine Liste-Funktion für eine grails-web-app. Diese Liste wird sich füllen einer Tabelle auf Basis einiger Suchkriterien. Im mit hibernate createCriteria, um zu versuchen, dies zu erreichen.
In diesem Fall können Sie suchen, indem 2 unterschiedliche Hauptfunktionen. Der Benutzername und die Benutzernummer.
Mein einziges Problem ist, zu versuchen, um die Schneider-Funktion, so dass wenn es feststellt, dass ein null-Wert, wird der Benutzer aufgefordert, dass einer der Werte null ist. Ein Benutzername MUSS eine Benutzernummer. Und wenn aus irgendeinem Grund die usernummer kommt bis null, dann muss der Benutzer aufgefordert werden. Oder wenn die Kombination aus Benutzername und Benutzernummer nicht gefunden, es wird auch die Aufforderung des Benutzers.
Dies ist meine Liste-Funktion, die mit den Suchkriterien. Die println an der Unterseite sind für das debugging und zeigt, was im suchen zu tun.
def list(params) {
//TODO STILL NOT WORKING RIGHT
def userSearchCri = User.createCriteria()
def userNumber = params.searchUserNumber
def username = params.searchUsername
uerSearchCri = User.createCriteria()
def userList = userSearchCri.list() {
eq('username', username)
eq('userNumber', userNumber)
}
System.out.println("Search: " + userList.userNumber)
if(userList.userNumber == "null"){
System.out.println("OH NO! The Users Number is = " + userList.userNumber + " DO SOMETHING!")
}
[userInstanceList: userList]
}
Iv versucht verschiedene Kombinationen der createCriteria Funktionen. wie isNotNull, ilike, ect... im anfangen zu glauben, ich kann dies mit createCritera. Dies ist die Quelle im mit für die createCriteria http://grails.org/doc/2.2.1/ref/Domain%20Classes/createCriteria.html.
Wenn jemand weiß, wie ich in der Lage sein könnte, um meine Absicht zu erreichen, entweder mit Hilfe der Suchkriterien oder einer anderen Methode. Ich würde mich sehr über ein paar Ratschläge.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verschiedene, wichtige Punkte zu betrachten:
params
um zu sehen, obuserName
ans/oderuserNumber
ist vergangen, und zurück zu senden eine Nachricht an Benutzer zu liefernInformationen gültig sind. Durch diese Weise werden Sie die Beseitigung der Möglichkeit,
Benutzer-Eingabe-Fehler.
userName/userNumber
.userName/userNumber
entsprechend für die einzelnen Benutzer-Objekt.Hier ist ein Beispiel:
Datenbanken allgemein behandeln von null-Werten als Besondere Fälle, die nicht mit arithmetischen Operationen wie " ='/eq. Also in deinem Fall, ich werde einige Annahmen, die kann man korrigieren, wenn ich falsch Liege:
In diesem Fall, was Sie tun könnten, ist die Verwendung einer
or
Zustand in Ihrem Kriterien-test für null-Werte sobald Sie ein Ergebnis bekommen:Können Sie die Bedingungen in einem Kriterien. Ich denke auch, Sie brauchen nur ein Ergebnis (Benutzername und Benutzernummer sind einzigartig?), so können Sie
get()
stattlist()