2011-10-04 87 views
1

例如通过区域名称分组:Grails的标准GROUPBY对象

def result = User.createCriteria().list{ 

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

但是假设我想要得到的“身份证”或其他属性。事实是,我想代表组的对象,而不是字符串“名称”。

result.each{ println it.customFuncion() } 

“zones”是一个hasMany属性,然后我无法自己组合。应该做什么,但没有工作:

def result = User.createCriteria().list{ 

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

这可能吗?感谢你们!

回答

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集合名称。