2012-04-10 3 views
2

다음과 같이 간단한 일대 다 (Gift) 옵션을 가진 두 개의 도메인 클래스가 있습니다 (GiftIn은 많은 GiftInstance를 가질 수 있습니다). 주어진 사용자 (그리고 잠재적으로 다른 기준)에 대한 모든 GiftInstance를 검색하지만 각 GiftInstance와 연관된 Gift의 '만료 된'속성을 기준으로 결과를 정렬하려고합니다. 나는 어떻게 이것을 성취 할 것인가? 나는 (등 동적 파인더, 기준) Grails의의 범위 내에서 유지되지Grails의 관련 테이블에서 열을 기준으로 결과를 정렬하는 방법은 무엇입니까?

class Gift { 

    String name; 
    String description; 
    Date expires; 
} 

class GiftInstance { 

    static belongsTo = [gift: Gift] 
    User user; 
    ... other fields ... 
} 

답변

1

는 두 가지 방법으로 mapping in your domain class를 통해이 작업을 수행 할 수있는 원시 SQL을 실행해야하는 것을 선호합니다.

중 하나 정렬과 같은 선물 클래스의 순서를 설정 :

class Gift { 

    String name; 
    String description; 
    Date expires; 

    static hasMany = [giftInstances: GiftInstance] 

    static mapping = { 
     giftInstances sort: "expired" 
    } 

} 

또는 GiftInstance 도메인 클래스

.

class GiftInstance { 

    static belongsTo = [gift: Gift] 
    User user 
    boolean expired 

    static mapping = { 
     sort: "expired" 
    } 
} 

예, 주문을 설정할 수도 있습니다.

+1

난이 내 질문에 대답을 생각하지 않는다에서 명명 된 쿼리를 추가 할 수 있습니다. 내가 원하는 giftInstance에 대한 쿼리는 많은 다른 선물에 걸쳐있는 사용자별로 이루어 지므로 특정 선물에 대한 모든 인스턴스를 주문하는 것에는 관심이 없습니다. 그리고 내 GiftInstance에 '만료'부울이 없습니다. 왜 추가 했습니까? – Peter

+0

안녕하세요, 죄송합니다. 당신의 질문을 잘못 읽었습니다. "Gift"는 "만료"반면 "GiftInstance"에는 "만료 된"속성이 있습니다. 그럼에도 불구하고이 매핑은 정렬 모드와 사용하는 쿼리의 기본값 순서를 설정합니다. – Mengu

0

당신은 GiftInstance


class GiftInstance { 

    static namedQueries = { 
     giftInstanceByUser { user -> 
      eq 'user', user 

      order 'gift.expires', 'asc' 
     } 
    } 
} 
관련 문제