이 쿼리의 형식을 지정하는 방법이 궁금합니다. 나는 3 개의 날짜가있는 테이블을 가지고 있는데, 일부는 null이 될 수있다. 세 개의 필드는 createdDate, downDate 및 fixDate입니다. 날짜에 따라 최신 항목을 쿼리하고 가져와야합니다. 예를 들어, fixDate가 null이 아닌 경우 fixDate에서 주문합니다. null 인 경우 downDate로 주문해야합니다. downDate가 null이면 createdDate에 의해 정렬합니다.GRAILS : HQL - IF (ISNULL)로 주문하십시오.
통해 MySQL은, 내가 올바른 결과를 사용하여 얻을 :
History.executeQuery("SELECT FROM History WHERE equipment=:eqpt ORDER BY " +
"IF(ISNULL(fixDate), IF(ISNULL(downDate), createdDate, downDate), fixDate) DESC", [eqpt:equipment])
:
SELECT * FROM history WHERE equipment_id=88 ORDER BY IF(ISNULL(fix_date), IF(ISNULL(down_date), created_date, down_date), fix_date) DESC;
내가 내 Grails의 프로젝트에이를 넣어 노력하고 HQL을 사용하려하고 (이 다른 변화를 시도)
는 또한 시도 : 내가 얻을
History.executeQuery("SELECT FROM History WHERE equipment=:eqpt ORDER BY " +
"IF(COALESCE(fixDate,downDate,createdDate) DESC", [eqpt:equipment])
오류는 다음과 같습니다
,536,nexpected token: FROM near line 1, column 8 [SELECT FROM com...History WHERE equipment=:eqpt ORDER BY IF(COALESCE(fixDate, downDate, createdDate) DESC]
createCriteria 솔루션도 있으면 도움이됩니다. 감사.
어쩌면 [이] (http://stackoverflow.com/questions/1657637/ifnull-equivalent-in-hibernate -query-language)가 도움이됩니다. –
@Sergio, 방금 시도했지만 불행하게도 여전히 동일한 오류 결과가 나타납니다. 고마워요 : ( – ibaralf
'SELECT h FROM History h' 시도하십시오. –