我正在开发一个grails项目,我有一个域类(Messages.groovy),它有:
static hasMany = [recipients:Recipient]
我正在尝试查询属于某个帐户的所有邮件,并对其拥有的收件人数进行排序。
到目前为止,我完全迷失了,试图查看文档我唯一想到的是:
def query = {
eq('account', account)
projections {
count "recipients"
}
}
我可能会离开,但我甚至不确定如何谷歌这个。我只需要获取消息对象以及按收件人数排序的收件人数。
答案 0 :(得分: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
}