根据grails中的父属性对查询结果进行排序

oma*_*llo 1 grails groovy grails-orm

是否可以根据关系中父类的属性对查询结果进行排序。例如,我有一个用户域类,它与任务列表具有一对多关系。

当显示“任务”域类的列表页面时,我希望能够通过关联的“用户名”对任务列表进行排序。

class User {
    String name
    String login
    String group
    List tasks = new ArrayList()
    static hasMany = [tasks:Task]
}

class Task {
    String summary
    String details
    User user
    static belongsTo = [user:User]
}
Run Code Online (Sandbox Code Playgroud)

我可以做这样的事情

Task.list([sort:"user", order:"asc"])
Run Code Online (Sandbox Code Playgroud)

但这是根据user.id进行排序的,是否有一种方法可以指定要在user.name上进行的排序?

Aar*_*ers 5

您可以使用条件进行

def criteria = Task.createCriteria()
def taskList = criteria.list {
    createAlias("user","_user")
    order( "_user.name")
}
Run Code Online (Sandbox Code Playgroud)