2009-02-06 14 views
16

Giả sử tôi đã xác định đối tượng Người dùng bằng GORM. Mỗi người dùng có thể có không hoặc nhiều Đăng nhập: s. Mỗi Đăng nhập có dấu thời gian. Khi truy xuất user.logins, tôi muốn đăng nhập được sắp xếp dựa trên giá trị của login.date. Cách Grails đúng để đạt được điều này là gì?Xác định thứ tự sắp xếp mặc định trong Grails/GORM

Ví dụ: Tôi muốn mã sau liệt kê tất cả thông tin đăng nhập của người dùng theo thứ tự tăng dần.

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

Đây là những lớp tham chiếu:

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

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

Tôi đang chạy Grails 1.0.4 mà là phiên bản ổn định mới nhất.

Trả lời

8

Việc xử lý trật tự sắp xếp mặc định trong Grails/GORM dường như có được đơn giản hóa triệt để trong Grails 1.1:

14

Chỉ cần chắc đăng nhập Lớp thực hiện các giao diện Comparable:

class Login implements Comparable { 

    // ... 

    Date date 

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

} 

và tuyên bố mối quan hệ là một SortedSet:

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

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

Chúng hiển thị cách thực hiện điều này trên trang GORM trong hướng dẫn tham khảo (phần 5). Bit bạn muốn ở gần cuối tài liệu đó là phần bạn muốn. Họ có hai ví dụ đơn giản:

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

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

Họ cũng có một ví dụ về sắp xếp vào một hiệp hội:

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

Và nếu bạn muốn giảm dần về hiệp hội: 'chuyến bay sắp xếp: 'số', trật tự: 'desc ''(trên http://grails.1312388.n4.nabble.com/sort-by-association-descending-td1312425.html) –

+0

Làm cách nào để sắp xếp nhiều thuộc tính? – ricardogobbo