我对Grails来说比较新。 我有以下
class House {
Integer number
Integer maxResidents
static belongsTo = [town: Town]
}
class Town {
String name
static hasMany = [houses: House]
}
我希望得到五个拥有大多数房屋的城镇。我已经看到了创建标准的可能性,但我现在无法处理它。有人可以支持吗? 谢谢!
答案 0 :(得分:1)
由于您具有双向关联,因此可以使用House
上的查询执行此操作:
def result = House.withCriteria {
projections {
groupProperty("town", "town")
rowCount("numHouses")
}
order("numHouses", "desc")
maxResults(5)
}
这会返回一个结果列表,其中每个结果res
的城镇为res[0]
,房屋数量为res[1]
。如果您希望每个结果都是可以访问res.town
和res.numHouses
的地图,那么您应该添加
resultTransformer(AliasToEntityMapResultTransformer.INSTANCE)
在maxResults
行之后(以及文件顶部的相应import
)。