我有两个通过多对多关系关联的域,Project和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 ''' )