gpt4 book ai didi

hibernate - Grails Criteria HQL多对多,分组依据

转载 作者:行者123 更新时间:2023-12-02 15:11:13 35 4
gpt4 key购买 nike

我有两个通过多对多关系关联的域,项目 ProjectCategory ,其中项目可以具有多个类别,并且一个类别可以分配给多个项目。所以:

class ProjectCategory {
String name
...
}

class Project {
static hasMany = [categories : ProjectCategory]
...
}

我想计算每个类别有多少个项目。完成此操作的 SQL 很简单:
select cat.name category, count(pcat.project_categories_id ) projCount
from project_project_category pcat,
project_category cat
where pcat.project_category_id = cat.id
group by project_category_id

返回如下内容:
category    |  projCount
'cat_1' | 3
'cat_2' | 4
'cat_3' | 1
...

现在,问题是,如何使用Criteria或HQL(看起来更像是“Grails / Groovy样式”)来实现此目的?

提前致谢。

编辑

我设法解决了 HQL :
def result  = ProjectCategory.executeQuery(
''' select c.name, count(p.id)
from Project p join p.categories c
group by c ''' )

最佳答案

使用条件API和投影可以使您获得如下效果:

def results = Project.createCriteria().list() {
createAlias('categories', 'catalias')
projections {
groupProperty('catalias.name')
count('id')
}
}

关于hibernate - Grails Criteria HQL多对多,分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15227632/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com