如何在Grails中对结果进行分组?

时间:2012-03-07 17:02:58

标签: grails groovy

我有一个像这样的Project类:

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

这样的用户类:

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

和Tasks类这样:

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

User会有很多ProjectProject会有很多Tasks

现在我需要一种方法来查询数据库以查找Tasks所有属于completed的{​​{1}}。例如,假设有两个项目,比如ProjectP1。其中P2已完成4 P1Tasks已完成P2。我的代码需要返回类似的内容:

Tasks

我知道很容易找到所有已完成的[P1:[t1,t2,t3,t4],P2:[t5]] ,它们会像这样返回:

Tasks

但我发现很难根据[t1,t2,t3,t4,t5] 对它们进行分组。

我该怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以在收藏中使用groupByAPIEXAMPLE

例如:

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

应该给你你想要的东西。