2014-06-09 2 views
3

Grails DetachedCriteria 쿼리를 사용하고 있으며 내림차순 정렬시 Null 값을 마지막으로 가져와야합니다. 이것은 Oracle 데이터베이스에 대한 것입니다. 지금까지 수행 한 연구를 바탕으로Grails/GORM에서 NULLS 마지막 정렬을 적용하는 방법

, Grails는 거기에 최대 절전 모드에서 이것에 대한 직접 지원은 없으며, 따라서하지 :

Grails/Hibernate: how to order by isnull(property) to get NULLs last?

https://hibernate.atlassian.net/browse/HHH-2381

이것들을 바탕으로, 내 최선의 선택은 Hibernate로부터 Order 클래스를 확장하고 나 자신의 NULL 지원을 추가하는 것 같다. 그 길을 따라, 누군가 Grails를 통해 어떻게 노출 될지 예를 들어 줄 수 있습니까? 나는 똑 바른 Hibernate에 대한 경험이 거의 없기 때문에 주어진 예제는 따르기가 다소 어렵다.

또는 Oracle에 테이블 정의 내에서 NULLS LAST 정렬을 지정하는 방법이 있습니까?

답변

2

은 다음 당신은 심지어 or 블록이있을 수 있습니다 최대 절전 addOrder 방법을

def userCriteria = User.createCriteria() 
List results = userCriteria.list(max:limit, offset:offset) { 
    eq("isActive", true) 
    ilike("firstName",text+"%") 
    userCriteria.addOrder(Order.asc("firstName").nulls(NullPrecedence.LAST)); 
} 

를 재정 의하여 마지막에 널 (null)을 정렬 Grails의 기준의 예입니다. 예.

or{ 
    userCriteria.addOrder(Order.asc(USERNAME).nulls(NullPrecedence.LAST)); 
    userCriteria.addOrder(Order.asc(EMAIL).nulls(NullPrecedence.LAST)); 
    userCriteria.addOrder(Order.asc(FIRST_NAME).nulls(NullPrecedence.LAST)); 
    userCriteria.addOrder(Order.asc(LAST_NAME).nulls(NullPrecedence.LAST)); 
} 

희망 사항은 누군가 나를 좋아하는 데 도움이되기를 바랍니다.

관련 문제