2010-06-08 9 views
1

조회를 실행하는 중 오류가 발생했습니다.자바에서 다음 문제를 해결하는 방법은 무엇입니까?

org.hibernate.hql.ast.QuerySyntaxException: expecting CLOSE, found 'LIMIT' near line 1, column 194 [from com.claystone.db.Gpsdata where id.mobileunitid = '2090818044' and gpsdate in (select id.gpsdate from com.claystone.db.Gpsdata where id.mobileunitid = '2090818044' ORDER BY id.gpsdate DESC LIMIT 1) and gpsstatus='true'] 

이것은 내 검색어입니다.이 검색어의 실수는 무엇입니까?

data=session.createQuery[from com.claystone.db.Gpsdata where id.mobileunitid = '2090818044' and gpsdate in (select id.gpsdate from com.claystone.db.Gpsdata where id.mobileunitid = '2090818044' ORDER BY id.gpsdate DESC LIMIT 1) and gpsstatus='true'] 
+0

HQL이 LIMIT 키워드를 지원하지 않는다고 생각합니다. 쿼리를 다시 작성할 수 없다면 네이티브 쿼리를 사용할 수 있습니다. 옵션. :(. 나는 다른 대답에 대해 궁금합니다. – Bogdan

+0

@Bogdan - 관련 질문으로 연결됩니다 : http://stackoverflow.com/questions/1239723/how-do-you-do-a-limit-query -in-hql –

답변

4

왜 하위 쿼리를 사용하고 있습니까? 그냥이를 좋아합니까 :

data=session.createQuery[from com.claystone.db.Gpsdata where id.mobileunitid = '2090818044' and gpsstatus='true' ORDER BY id.gpsdate DESC LIMIT 1] 

당신이 마지막 오프 LIMIT 1을 쿼리에 .setMaxResults(1)를 사용해야 할 수도 있습니다.

+0

나는 그가 전체 결과 세트가 아닌 1로 서브 쿼리 결과를 제한하고 싶다고 생각한다. 나는 JPA에서 어떻게 행해지는지 알고 싶어한다. – Bogdan

+0

내부에서 서브 쿼리 선택을 사용하려고 할 때 귀하의 주요 선택 진술. 그것은 단 하나의 항목을 반환해야합니다. – lakshmi

+0

하지만 하위 쿼리는 동일한 테이블/개체에 가입하는 것 - 그래서 확실하게 당신이 제안한 하나의 쿼리/orderby/limit로 할 수 있습니까? – oedo

0

반면 CreateSQLQuery() 대신 createQuery()를 사용하면 같은 오류가 발생할 수 있습니다. "CLOSE가 CLIMED, LIMIT가 CLOSE를 찾거나 CLOSE가 NULL을 찾았습니다.

관련 문제