2012-03-07 27 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} 

应该给你你想要的东西。