Ich habe die folgenden Domain-Objekte:definieren oder einen Zustand mit Grails Kriterien api
class User {
String name
Transaction transaction
static constraints = {
transaction nullable: true
}
}
class Transaction {
boolean successful
User user
static belongsTo = User
}
Ich möchte alle users
wählen, die keine erfolgreiche Transaktion haben. Das heißt, ich möchte die Benutzer ohne jede Transaktion (transaction == null
) und die Benutzer, die eine Transaktion mit dem erfolgreichen Wert haben false
(transaction.successful == false
). Ich möchte dies mit der Kriterien-API tun (weil dies mit anderen Bedingungen basierend auf Benutzereingaben kombiniert werden kann). diese
Ich habe versucht:
def c = User.createCriteria()
def results = c {
or {
isNull 'transaction'
transaction {
eq 'successful', false
}
}
}
aber das gibt mir nur die Benutzer, die eine Transaktion haben (mit dem erfolgreichen Wert false
). Aber ich habe nicht die Nutzer, wo Transaktion null
Der folgende Code zeigt, wie ich einige Beispieldaten erstellt:
def createUserAndTransaction(String name, Boolean successful = null) {
User u = new User(name: name)
if (successful != null) {
Transaction t = new Transaction(user: u, successful: successful)
u.setTransaction(t)
}
u.save()
}
def init = { servletContext ->
createUserAndTransaction 'john', true
createUserAndTransaction 'mike', false
createUserAndTransaction 'pablo'
}
Meine Kriterien Abfrage gibt nur mike
in diesem Fall. Aber ich möchte mike
und pablo
. Was vermisse ich?
Vielen Dank, das hat mir geholfen :-) – micha
Kein Problem - gerne helfen! –