2009-02-06 8 views
16

GORM을 사용하여 사용자 개체를 정의했다고 가정 해 봅시다. 각 사용자는 0 개 이상의 로그인을 가질 수 있습니다. 각 로그인에는 타임 스탬프가 있습니다. user.logins를 검색 할 때 login.date의 값에 따라 로그인을 정렬하고 싶습니다. 이것을 달성하기위한 정확한 Grails 방법은 무엇입니까?Grails/GORM에서 기본 정렬 순서 정의

예 : 모든 사용자의 로그인을 오름차순으로 나열하려면 다음 코드를 입력하십시오.

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

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

나는 최신 안정 버전이다 Grails를 1.0.4을 실행 해요 :

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

이 참조 된 클래스입니다.

답변

8

Grails를/GORM의 기본 정렬 순서의 취급을 갖고있는 것 같아요 Grails 1.1에서 근본적으로 단순화되었습니다 :

14

그냥 로그인 클래스가 Comparable 인터페이스 구현합니다

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

참조 가이드 (5 절)의 GORM 페이지에서이를 수행하는 방법을 보여줍니다. 원하는 부분이 문서의 맨 아래에 있습니다. 원하는 부분이 있습니다.

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

그리고 당신은 협회에 내림차순하려는 경우 :'항공편을 일종의 '수'주문 '내림차순 그들은 또한 협회에 정렬의 예를

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

: 그들은 두 가지 간단한 예를 ''(per http://grails.1312388.n4.nabble.com/sort-by-association-descending-td1312425.html) –

+0

어떻게 여러 속성을 정렬 할 수 있습니까? – ricardogobbo

관련 문제