0

我正在研究一个 grails 项目,并且我有一个域类(Messages.groovy),它具有:

static hasMany = [recipients:Recipient]

我正在尝试查询属于某个帐户的所有消息,并按其拥有的收件人数量进行排序。

到目前为止,我完全迷路了,试图查看文档,我唯一想到的是:

def query = {
    eq('account', account)
    projections {
        count "recipients"
    }
}

我可能很遥远,但我什至不知道如何用谷歌搜索。我只需要获取消息对象以及按收件人数排序的收件人数。

4

1 回答 1

0

实现这一点的最简单和可理解的方法是在查询中使用查询和映射(有点冗长),但与复杂的标准相比很容易理解。

def result = Message.executeQuery("select \
                                   new map(m as message, count(r) as countRec) \
                                   from Message as m \
                                   inner join m.recepients as r \
                                   where m.account = :account \
                                   group by m \
                                   order by count(r) desc", [account: account])

result.each{
    println it.message
    println it.countRec
}
于 2013-09-11T02:20:26.930 回答