子列表中的最大项目的HQL顺序

时间:2012-10-02 08:42:23

标签: grails hql

我有以下域类

class Child{
    def age
}

class Parent{
    static hasMany = [children:Child]
}

我想在HQL中执行以下内容

Parent.list()
    .sort{ parent -> parent.children.sort{ child -> child.age}[0]}[0..10]

基本上我想检索按照其长子的年龄排序的父母列表。并将此限制为仅10条记录。我不想从数据库中提取所有父记录和子记录,然后进行必要的排序。我希望HQL可以在'数据库层'上执行此操作,并且仅返回我需要的结果。谢谢:))

1 个答案:

答案 0 :(得分:1)

Parent.withCriteria {
        createAlias('children', 'ch', org.hibernate.criterion.CriteriaSpecification.LEFT_JOIN)
        order("ch.age", "desc")
        maxResults(10)

        setResultTransformer(org.hibernate.criterion.CriteriaSpecification.DISTINCT_ROOT_ENTITY)
    }