2010-08-29 65 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做到這一點。

相關問題