我不知道這個查詢是否可以使用grails executeQuery。我做樣本域類:grails hibernateQuery count
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中使用count(...)運算符executeQuery?我覺得這就是這個使用動態查找器的等效代碼:
def list = []
def c = Child.countByFirstNameAndLastName('Poliwag',Wrath)
if (c == 2) {
list.add(Child.findByFirstNameAndLastName('Poliwag','Wrath'))
}
我想如果可能的話我用的executeQuery這將節省更多的代碼。 謝謝..
感謝您的信息,只是有一個跟進的問題。 我做的是這樣的: def c = Child.executeQuery(「通過c.firstName選擇新的地圖(c.firstName作爲名字,c.lastName作爲姓氏)從c兒童c組,c.firstName具有count(c.firstName )= 3和計數(c.lastName)= 4「) 它只返回一個_null_列表,我期望它會返回具有相同的名字與另外2個條目,並具有相同的姓氏與另外3個條目。 – antibry
GROUP BY語句的工作方式是它會創建具有您指定的列的組,並且該HAVING語句將在GROUP BY返回的集合上運行。因此,不要寫'有count(c.firstname = 2),我也可以寫count(c.lastname)= 2,我會得到相同的結果。如果我不清楚,你可以看看這個例子來更好地理解它:http://www.plus2net.com/sql_tutorial/sql_group_by2.php – MBozic