2011-10-04 59 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集合名稱。