我有以下域类
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可以在'数据库层'上执行此操作,并且仅返回我需要的结果。谢谢:))
答案 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)
}