2012-03-07 64 views
0

我有一個項目類這樣的:如何將結果分組到Grails中?

class Project { 
    static hasMany = [ tasks : Tasks , users : User ] 
    static belongsTo = User 
    String name 
    String toString() { 
     this.name 
    } 
} 

User類是這樣的:

class User { 
    static hasMany = [ project: Project ] 
    Profile profile 
    String username 
    String password 
    String toString() { 
     this.username 
    } 
} 

和任務類是這樣的:

class Tasks { 
    static belongsTo = [ user : User, project: Project ] 
    boolean completed 
    String toString(){ 
     this.title 
    } 
} 

User將有許多ProjectProject將有許多Tasks

現在我需要一種方法來查詢數據庫找到,所有的Taskscompleted和屬於Project。例如說,有兩個項目,例如P1P2。其中P1已完成4個TasksP2已完成1個Tasks。我的代碼需要返回類似:

[P1:[t1,t2,t3,t4],P2:[t5]] 

我知道它很容易找到所有已完成Tasks,這將返回這樣的:

[t1,t2,t3,t4,t5] 

但我發現很難組根據他們到他們的Project

我該怎麼做?

在此先感謝。

回答

1

您可以收集使用groupByAPIEXAMPLE

例如:

def completedTasks = Task.findAllByCompleted(true) 
def compltedTasksByProject = compltedTasks.groupBy {it.project} 

應該給你你想要的東西。