2011-10-04 2 views
1

Exemple de regroupement par nom des zones:critères Grails GroupBy objet

def result = User.createCriteria().list{ 

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

mais supposons que je veuille obtenir le « id » ou d'autres attributs. le fait est que je veux l'objet sur le représentant du groupe et non sur la chaîne "nom".

result.each{ println it.customFuncion() } 

« zones » est un attribut hasMany puis je ne peux pas le groupe lui-même. Ce qui devrait être fait, mais ne fonctionne pas:

def result = User.createCriteria().list{ 

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

Est-ce possible? Merci les gars!

Répondre

0

utilisation hql pour les requêtes complexes:

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") 

Ensuite, vous pouvez accéder aux colonnes de résultat comme suit:

result.each { row -> row[0] // u.id } // or access via defined column name 

Imaginez que je ne connais pas vos noms de collection hasMany réel.

Questions connexes