grails - 如何在Grails中将结果分组?

我有一个像这样的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将具有许多Project,而Project将具有许多Tasks

现在,我需要一种查询数据库的方法,以查找所有属于Tasks且属于completedProject。例如,说有两个项目,即P1P2。其中P1具有4个完整的TasksP2具有1个完整的Tasks。我的代码需要返回类似:
[P1:[t1,t2,t3,t4],P2:[t5]]

我知道很容易找到所有已完成的Tasks,它将返回如下:
[t1,t2,t3,t4,t5]

但是我发现很难根据它们的Project对其进行分组。

我怎样才能做到这一点?

提前致谢。

最佳答案

您可以在集合上使用groupBy:API或EXAMPLE

例如:

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

应该给你你想要的。

https://stackoverflow.com/questions/9605962/

相关文章:

grails - grails g:formatNumber

jquery - “Uncaught ReferenceError: JQueryValidator

grails - 为用户登录插入审核日志记录条目

sql - 将普通 SQL 表添加到 Grails 应用程序而不是使用 ORM?

regex - 如何为包含字母数字和特殊字符的输入编写匹配项

grails - grails编码为html属性

grails - 标准的单元测试模拟

grails - 在运行应用程序完成后,grails应用程序会自动连续自动重新加载

grails - 从 map 的特定值的下拉列表中设置值

grails - 在同一个 gsp 页面上使用 3 个布局