Кажется, вы хотите узнать, сколько раз каждый тег используется в викторинах. Определив свои доменные классы, как вы это сделали, вы получили среднюю таблицу quiz_tag, и с помощью строки SQL вы можете узнать результат на этот вопрос.
Но кажется, что это невозможно с critera builder, то есть Hibernate, потому что из Tag вы не можете получить доступ к присоединяемой таблице. Вы можете сделать это из викторины, потому что в викторине есть hasMany[tags:Tag]
Вы можете получить доступ к объединенной таблице из тега, если измените ее следующим образом:
Tag{
String tag
static belongsTo = Quiz
static hasMany[quizes:Quiz]
}
Ваша модель базы данных остается прежней, но теперь Hibernate может перейти от тега к присоединенной таблице. Вы можете попробовать этот запрос HQL, который даст вам тег и количество вхождений в викторинах:
Tag.executeQuery("SELECT t, count(q) FROM Tag t JOIN FETCH t.quizes q GROUP BY t")
Я думаю, что проще просто с HQL, но я думаю, вы могли бы сделать это и с построителем критериев, возможно, используя sqlGroupProjection для группировки, если он поддерживается.
person
MBozic
schedule
05.10.2012