1

我对 Grails 比较陌生。我有以下

class House {
    Integer number
    Integer maxResidents

    static belongsTo = [town: Town]
} 

class Town {
    String name

    static hasMany = [houses: House]
}

我想得到五个拥有最多房屋的城镇。我已经看到了创建标准的可能性,但我现在无法处理它。有人可以支持吗?谢谢!

4

1 回答 1

1

由于您具有双向关联,因此您可以通过以下查询来执行此操作House

def result = House.withCriteria {
  projections {
    groupProperty("town", "town")
    rowCount("numHouses")
  }
  order("numHouses", "desc")
  maxResults(5)
}

这将返回一个结果列表,其中每个结果res的城镇为res[0],房屋数量为res[1]。如果您希望每个结果都是可以访问的地图res.townres.numHouses那么您应该添加

resultTransformer(AliasToEntityMapResultTransformer.INSTANCE)

在该maxResults行之后(以及import文件顶部的相应内容)。

于 2013-02-20T09:23:02.980 回答