#sql #grails #criteria
#sql #grails #критерии
Вопрос:
Пример группировки по названию зон:
def result = User.createCriteria().list{
projections {
roles {
zones{
groupProperty("name")
}
}
}
}
но предположим, я хочу получить «идентификатор» или другие атрибуты. дело в том, что я хочу, чтобы объект представлял группу, а не строку «name».
result.each{ println it.customFuncion() }
«зоны» — это атрибут hasMany, и тогда я не могу группировать сам по себе. Что должно быть сделано, но не работает:
def result = User.createCriteria().list{
projections {
roles {
groupProperty("zones")
}
}
}
Возможно ли это? Спасибо, ребята!
Ответ №1:
используйте hql для сложных запросов:
def result = User.executeQuery("select u.id, zone.name from User as u inner join u.roles as role inner join role.zones as zone group by u.id, zone.name")
Затем вы можете получить доступ к столбцам результатов следующим образом:
result.each { row -> row[0] // u.id } // or access via defined column name
Представьте себе, что я не знаю ваших настоящих названий многих коллекций.