如何在Grails中执行此查询?

时间:2012-12-13 22:00:42

标签: grails hql gorm

我有两个域类:

class User {
    String nickname
}

class Episodes {
    String name
    User sentBy
}

我想对谁发送更多剧集进行排名。

所以我做了这个查询,并给了我想要的结果。

SELECT user.nickname, count(episodes.id) total
FROM user
JOIN episodes on user.id = episodes.sent_by
GROUP BY user.nickname
ORDER BY total DESC

在我的控制器中运行此查询的最佳方法是什么?怎么样?

2 个答案:

答案 0 :(得分:0)

我会使用HQL:

def results = User.executeQuery(
   'SELECT e.sentBy.nickname, count(e) as total ' +
   'FROM Episodes e ' +
   'GROUP BY e.sentBy.nickname ' +
   'ORDER BY total desc')

结果将是Object []数组的列表,第一个元素是昵称,第二个元素是计数,例如。

for (Object[] row in results) {
   println "User ${row[0]} has ${row[1]} episodes"

}

答案 1 :(得分:0)

关于您的担忧,有一个已回答的问题:

Using groupProperty and countDistinct in Grails Criteria