2009-02-06 7 views
16

Предположим, что я определил объект User, используя GORM. У каждого пользователя может быть ноль или более Логин: s. У каждого входа есть временная метка. При извлечении user.logins я хочу, чтобы логины сортировались на основе значения login.date. Каков правильный подход Grails к этому?Определение порядка сортировки по умолчанию в Grails/GORM

Пример: Я хочу, чтобы следующий код отображал все пользовательские логины в порядке возрастания.

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

Это ссылочные классы:

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

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

Я бег Grails 1.0.4, которая является последней стабильной версией.

ответ

8

Обработка порядка сортировки по умолчанию в Grails/GORM, кажется, были радикально упрощены в Grails 1.1:

14

Просто сделать Войти Класс реализации Сопоставимые интерфейса:

class Login implements Comparable { 

    // ... 

    Date date 

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

} 

и объявить отношение быть SortedSet:

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

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

Они показывают, как это сделать на странице GORM в справочном руководстве (раздел 5). Бит, который вы хотите, находится в нижней части этого документа - это раздел, который вы хотите. У них есть два простых примера:

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

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

Они также имеют пример сортировки по ассоциации:

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

И если вы хотите нисходящих ассоциации: 'рейсы сортировать:«число», заказ:«по убыванию ''(per http://grails.1312388.n4.nabble.com/sort-by-association-descending-td1312425.html) –

+0

Как я могу отсортировать несколько атрибутов? – ricardogobbo