7
我有以下的域對象:定義或病症Grails的標準API
class User {
String name
Transaction transaction
static constraints = {
transaction nullable: true
}
}
class Transaction {
boolean successful
User user
static belongsTo = User
}
我要選擇那些沒有成功的交易所有users
。這意味着,我希望用戶沒有任何交易(transaction == null
),並具有與成功的價值false
(transaction.successful == false
)交易的用戶。我想用Criteria API來做到這一點(因爲這可以與基於用戶輸入的其他條件相結合)。
我嘗試這樣做:
def c = User.createCriteria()
def results = c {
or {
isNull 'transaction'
transaction {
eq 'successful', false
}
}
}
但是這給了我只有那些交易(與成功的價值false
)的用戶。但是,在交易null
我沒有得到用戶下面的代碼顯示瞭如何創建一些示例數據:
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'
}
我的條件查詢只有在這種情況下返回mike
。但我想要mike
和pablo
。我錯過了什麼?
謝謝你,幫我:-) – micha
沒問題 - 很高興幫助! –