2009-02-06 11 views
16

Załóżmy, że zdefiniowałem obiekt użytkownika przy użyciu GORM. Każdy użytkownik może mieć zero lub więcej Login: s. Każde logowanie ma znacznik czasu. Podczas pobierania user.logins chcę, aby identyfikatory były sortowane na podstawie wartości login.date. Jaka jest właściwa droga Grailsa, aby to osiągnąć?Definiowanie domyślnej kolejności sortowania w Grails/GORM

Przykład: Chcę, aby poniższy kod zawierał listę wszystkich loginów użytkownika w porządku rosnącym.

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

Są odwołuje zajęcia:

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

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

biegnę Grails 1.0.4, która jest najnowsza wersja stabilna.

Odpowiedz

8

Postępowanie z domyślnej kolejności sortowania w Grails/GORM wydaje się mieć radykalnie uproszczono w Grails 1.1:

14

Wystarczy zrobić Logowanie Klasa wdrożenia porównywalnym interfejs:

class Login implements Comparable { 

    // ... 

    Date date 

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

} 

i zadeklarować relację być SortedSet:

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

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

Pokazują, jak to zrobić na stronie GORM w przewodniku referencyjnym (rozdział 5). Bit, którego chcesz, znajduje się w dolnej części tego dokumentu, jest żądaną sekcją. Mają dwa proste przykłady:

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

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

Mają także przykład sortowania na związek:

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

a jeśli chcesz malejąco sprawie włączenia: 'loty sortowania:„number”, porządek:„malejąco "(na http://grails.1312388.n4.nabble.com/sort-by-association-descending-td1312425.html) –

+0

Jak mogę sortować wiele atrybutów? – ricardogobbo

Powiązane problemy