ho le seguenti oggetti di dominio:Definizione o condizione con criteri Grails api
class User {
String name
Transaction transaction
static constraints = {
transaction nullable: true
}
}
class Transaction {
boolean successful
User user
static belongsTo = User
}
voglio selezionare tutti users
che non hanno alcuna operazione di successo. Ciò significa che voglio gli utenti senza alcuna transazione (transaction == null
) e gli utenti che hanno una transazione con il valore corretto false
(transaction.successful == false
). Voglio farlo con l'API Criteria (perché può essere combinata con altre condizioni basate sull'input dell'utente).
ho provato questo:
def c = User.createCriteria()
def results = c {
or {
isNull 'transaction'
transaction {
eq 'successful', false
}
}
}
Tuttavia, questo mi dà solo gli utenti che dispongono di una transazione (con il valore di successo false
). Ma non ottengo gli utenti in cui transazione è null
Il codice seguente mostra come ho creato un po 'di dati di esempio:
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'
}
La mia domanda criteri restituisce solo mike
in questo caso. Ma voglio mike
e pablo
. Cosa mi manca?
Grazie molto, questo mi ha aiutato :-) – micha
Nessun problema - felice di aiutare! –