【发布时间】:2013-02-20 01:55:31
【问题描述】:
我有两个通过多对多关系关联的域,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 ''' )
【问题讨论】:
-
我找到了这篇关于带投影的命名查询的文章,供进一步参考:wiredforcode.com/blog/2011/03/20/…
标签: hibernate grails hql criteria