Grails标准groupby对象

时间:2011-10-04 22:44:19

标签: sql grails criteria

按区域名称分组的示例:

def result = User.createCriteria().list{

     projections {
          roles  {
               zones{
                    groupProperty("name")
               }
          }
     }
}

但是假设我想获得“id”或其他属性。事实是我希望对象代表组而不是字符串“name”。

result.each{ println it.customFuncion() }

“zones”是一个hasMany属性,然后我不能自己分组。应该做什么,但不起作用:

def result = User.createCriteria().list{

     projections {
          roles  {
               groupProperty("zones")
          }
     }    
}

这可能吗?谢谢你们!

1 个答案:

答案 0 :(得分:0)

使用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

想象一下,我不知道你真正的hasMany集合名称。