多対多の関係で関連付けられた2つのドメイン、ProjectとProjectCategoryがあります。ここで、プロジェクトは多くのカテゴリを持つことができ、1つのカテゴリが複数のプロジェクトに割り当てられる場合があります。それで:
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 ''' )