2017-10-16 12 views
-1

이 쿼리는 완벽하게 MySQL과 작업하고 있지만 어느 하나가HQL 이름 쿼리에 MySQL의 하위 쿼리로 변환하는 방법

감사 나를 도울 수 HQL 이름 쿼리와 함께 작동하지 않습니다 내 SQL입니다

SELECT * FROM (SELECT * FROM EsEvent ORDER BY eventTimestamp DESC) e WHERE isReset=1 GROUP BY eventId; 

이것은 내가 작성한 나의 HQL 이름 쿼리입니다.

FROM (FROM EsEvent es ORDER BY es.eventTimestamp DESC) EsEvent e WHERE e.isReset=1 GROUP BY e.eventId 

하지만이 오류로까지 그 것이다 작동되지 않고

은 sessionFactory의 객체 생성 실패 : 명명 된 쿼리의 오류 : org.hibernate.HibernateException HQL_GET_ALL_ESEVENT_GROUP_BY_EVENT_ID_ORDER_BY_EVENT_TIMESTAMP_AND_RESET_ID_ONE를

내 목적은 내가 where 절을 평가하기 전에 어느 것이 든 나를 도와 줄 수있는 순서를 필요로하기 전에이다.

SELECT e FROM 
(SELECT es FROM EsEvent es ORDER BY es.eventTimestamp DESC) EsEvent e 
WHERE e.isReset=1 GROUP BY e.eventId 

을하지만 간단한 방법은 다음과 같습니다 :

답변

0

HQL이 시도

SELECT es FROM EsEvent es 
WHERE es.isReset=1 
GROUP BY es.eventId 
ORDER BY es.eventTimestamp DESC 

에주의 :

일반적으로, 당신은 당신의 필드 목록에서 GROUP BY 절을 사용할 때 그룹화 된 필드 만 사용하거나 함수 (기능별) 필드를 집계해야합니다.

+0

여전히 같은 오류입니다. 나는 그것으로 시도 할 수있는 대안적인 방법이 있다면 단지 나의 목적을 성취 할 필요가있다. – randikaisuru

+0

@randikaisuru SELECT e.eventId를 넣고 쿼리가 작동하는지 알려주십시오. –

+0

여전히 같은 오류입니다. 하지만이 작업은 완벽하게 작동합니다 "e.eventId FROM EsEvent e where e.isReset = 1 GROUP BY e.eventId"하지만 하위 쿼리 부속이 추가되면 오류로 종료됩니다. – randikaisuru