grails - 使用条件,如何在Grails GORM中基于max(column)获取结果列表

标签 grails hql gorm criteria

假设我有这个GORM对象

Class Person {
  String country
  int age
  String Name
}

我想得到每个国家的长者

我可以通过这种方式获得投影,但是我想获得Person对象的列表。
def results = Person.withCriteria {
  projections {
    groupProperty("country")
    max('age')
 }
}

最佳答案

def countries = Person.executeQuery(
    "select distinct person.country from Person person")
def persons = countries.collect{ country ->
    Person.executeQuery(
        "from Person as person1 " +
        "where person1.country='${country}' and person1.age=" +
            "("+
            "select max(age) "+
            "from Person as person2 "+
            "where person2.country='${country}' "+
            "group by person2.country "+
            ")"
         )
}

希望这会有所帮助。这将返回一个列表列表,因为每个国家都有一个年龄最大的人群的列表。

关于grails - 使用条件,如何在Grails GORM中基于max(column)获取结果列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607386/

相关文章:

java - HQL 或 Java 持久性查询语言中的 IN 子句

java - "from unexpected"createQuery时

sql - 细数一对一的关系

grails - 双向一对多关系

tomcat - 一个 grails 应用程序有多个或多个域?

grails - 如何使用 TagLib 将字节数组(Blob)呈现为图像

grails - 使用Shiro插件保护Grails应用程序中部分而非全部页面的安全

hadoop - 在HiveQL中计算年龄/任期

grails - 当前 Controller 中不存在 Controller 时,如何使用过滤器重定向到外部URL

hibernate - 启发式完成:结果状态回滚;