我有一个域类:
class Person{
static hasMany = [friends:Person]
....
}
我要做的是根据他们拥有的朋友数过滤掉人数。
这就是我想出来的,它完成了这项工作:
Person.where{
friends.size() == 3
}
它很慢,我可以没有列表,所以理想情况下我只想运行类似的东西:
select count(*) from Person where size(friends) == 3
我像疯子一样搜索,但是我无法在countBy上找到那么多信息(我想我想做的事情就是数数)。
赞赏任何意见。
答案 0 :(得分:2)
使用where
查询,您应该能够使用count()
而不是列出所有匹配项。 where
创建了一个支持多项操作的DetachedCriteria
。
Person.where { friends.size() == 3 }.count()
如果这不能像我认为的那样有效,你可能需要使用带有投影的Criteria才能返回计数。
Person.withCriteria {
sizeEq 'friends', 3
projections {
rowCount()
}
}