次のドメイン オブジェクトがあります。
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
。私は何が欠けていますか?