mam następujące obiekty domeny:Definiowanie lub stanu z kryteriami Grails api
class User {
String name
Transaction transaction
static constraints = {
transaction nullable: true
}
}
class Transaction {
boolean successful
User user
static belongsTo = User
}
chcę zaznaczyć cały users
, które nie mają udaną transakcję. Oznacza to, że chcę mieć użytkowników bez żadnych transakcji (transaction == null
) oraz użytkowników, którzy mają transakcję z pomyślną wartością false
(transaction.successful == false
). Chcę to zrobić za pomocą API Criteria (ponieważ można to połączyć z innymi warunkami opartymi na danych wprowadzanych przez użytkownika).
Próbowałem to:
def c = User.createCriteria()
def results = c {
or {
isNull 'transaction'
transaction {
eq 'successful', false
}
}
}
Jednak to daje mi tylko użytkowników, którzy mają transakcję (z udanym wartości false
). Ale ja nie rozumiem użytkowników gdzie transakcja jest null
Poniższy kod pokazuje jak stworzyłem niektóre dane przykładowe:
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'
}
Moje kryteria kwerenda zwraca tylko mike
w tym przypadku. Ale chcę mike
i pablo
. czego mi brakuje?
Wielkie dzięki, to pomogło mi :-) – micha
Nie ma problemu - chętnie pomożemy! –