grailsexecuteQueryを使用してこのクエリが可能かどうかはわかりません。サンプルをドメインクラスにしました:
class Child {
String firstName
String lastName
String nickName
}
これが私のブートストラップです:
class BootStrap {
def init = { servletContext ->
def childOne = new Child(firstName: 'Poliwag', lastName:'Wrath', nickName: 'taurus')
def childTwo = new Child(firstName: 'Poliwarp', lastName: 'Wrath', nickName:'libra')
def childThree = new Child(firstName: 'Poliwag', lastName: 'Wrath',nickName:'aries')
def childFour = new Child(firstName: 'Poliwag', lastName: 'Wrath',nickName:'virgo')
childOne.save(flush: true, failOnError: true)
childTwo.save(flush: true, failOnError: true)
childThree.save(flush: true, failOnError: true)
childFour.save(flush: true, failOnError: true)
}
}
お気づきのとおり、 firstNameプロパティとlastNameプロパティが同じ2つのサンプルデータエントリがありますが、 nickNameプロパティのみが異なります。executeQueryで取得したいのは、 firstNameとlastNameのプロパティが別の2つのエントリと同じであるエントリのリストです。grails executeQueryでcount(...)を指定して演算子を使用することは可能ですか?これは、動的ファインダーを使用したこれと同等のコードだと思います。
def list = []
def c = Child.countByFirstNameAndLastName('Poliwag',Wrath)
if (c == 2) {
list.add(Child.findByFirstNameAndLastName('Poliwag','Wrath'))
}
可能であればexecuteQueryを使用すると、より多くのコード行を節約できると思います。ありがとう..