2009-02-06 16 views
16

Disons que j'ai défini un objet Utilisateur en utilisant GORM. Chaque utilisateur peut avoir zéro ou plus. Login: s. Chaque connexion a un horodatage. Lors de la récupération de user.logins, je souhaite que les connexions soient triées en fonction de la valeur de login.date. Quel est le bon moyen de Grails pour y parvenir? Exemple: Je veux que le code suivant liste tous les identifiants de l'utilisateur dans l'ordre croissant.Définition de l'ordre de tri par défaut dans Grails/GORM

<g:each var="login" in="${user.logins}"> 
    <tr> 
    <td>${login.date}</td> 
    </tr> 
</g:each> 

Ce sont les classes référencées:

class User { 
    ... 
    def hasMany = [logins: Login] 
    static fetchMode = [logins: "eager"] 
} 

class Login { 
    Date date 
    ... 
    def belongsTo = [User] 
} 

Je suis en cours d'exécution Grails 1.0.4 qui est la dernière version stable.

Répondre

8

Le traitement de l'ordre de tri par défaut dans Grails/GORM semble avoir été radicalement simplifié dans les Grails 1.1:

14

Assurez la Connexion classe implémente l'interface Comparable:

class Login implements Comparable { 

    // ... 

    Date date 

    public int compareTo(def other) { 
     return date <=> other?.date // <=> is the compareTo operator in groovy 
    } 

} 

et déclarer la relation à un SortedSet:

class User { 
    ... 
    def hasMany = [logins: Login]    
    SortedSet logins 

    static fetchMode = [logins: "eager"] 
} 
27

Ils montrent comment faire cela sur la page GORM dans le guide de référence (section 5). Le bit que vous voulez trouver au bas de ce document est la section que vous voulez. Ils ont deux exemples simples:

class Airport { 
    … 
    static mapping = { 
     sort "name" 
    } 
} 

class Airport { 
    … 
    static mapping = { 
     sort name:"desc" 
    } 
} 

Ils ont aussi un exemple de tri sur une association:

class Airport { 
    … 
    static hasMany = [flights:Flight] 
    static mapping = { 
     flights sort:'number' 
    } 
} 
+2

Et si vous voulez descendre sur l'association: 'vols genre: « numéro », l'ordre: « desc '' (par http://grails.1312388.n4.nabble.com/sort-by-association-descending-td1312425.html) –

+0

Comment puis-je trier plusieurs attributs? – ricardogobbo