2010-08-29 47 views
1

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

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

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] 
} 

我可以做这样的事情

Task.list([sort:"user", order:"asc"]) 
由user.id

但这种种,有没有指定排序要对user.name的方法吗?

回答

4

可以使用Criteria

def criteria = Task.createCriteria() 
def taskList = criteria.list { 
    createAlias("user","_user") 
    order("_user.name") 
} 
+0

酷,工作就像一个魅力。任何想法如何使排序不区分大小写? – omarello 2010-08-30 16:31:04

+0

不要紧,发现它在休眠文档,显然我只是添加.ignoreCase()这样的命令,这样的 命令(“_ user.name”)。ignoreCase() – omarello 2010-08-30 16:54:52

+1

但这不起作用,在设置默认排序为了对象,这似乎是在屁股皇家痛苦。 – PlexQ 2012-01-14 20:15:38

0

IIRC,使用的toString Grails的排序(),因为你没有提供的一个,它使用的ID做到这一点。

相关问题