2012-08-06 2 views
1

나는 다음과 같은 쿼리 (JPA 2.0 사용) 한 :어떻게 by by 절에서 연산자를 지정할 수 있습니까?

String query = " 
SELECT p.id, p.name 
FROM package p 
ORDER BY (p.id = :idPackage) DESC, (p.mPrice+p.vPrice) DESC 
LIMIT 10 "; 

query.setParameter("idPackage", idPackage); 
query.getResultList(); 
패키지는 다음과 같은 속성이 있습니다

: 나는 그것을 실행하려고 할 때 JPA 쿼리에서

Package 
- id 
- name 
- mPrice 
- vPrice 
- duration 

이는 불평을 ORDER BY 절에 "="연산자가 있습니다. 주위를 둘러 볼 방법이 있습니까?

입니다 예외가 내가 얻을 : 시도 :

String query = " 
SELECT p.id, p.name 
FROM package p 
ORDER BY (p.id = idPackage) DESC, (p.mPrice+p.vPrice) DESC 
LIMIT 10 "; 
+1

왜 그 곳에'= '가 있습니까? – Dahaka

+1

여기에 대해 알게되었습니다. http://stackoverflow.com/a/11823934/280924 – brainydexter

+0

잘 보셨습니까? 그 점을 지적하려고합니다. – Chris

답변

1

에게 당신을

SELECT p.id, p.name 
FROM package p 
ORDER BY (p.id = idPackage) DESC, (p.mPrice+p.vPrice) DESC 
LIMIT 10; 

편집 :

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node:

+0

여기에 문서가 있습니까? – brainydexter

+1

http://docs.oracle.com/cd/E11035_01/kodo41/full/html/ejb3_langref.html#ejb3_langref_orderby – tibtof

+0

연산자를 사용하지 않는 것에 대해서는 아무 말도하지 않습니다. – brainydexter

0

당신은 비교 연산자입니다 =를 사용할 필요가 order by 절에 '='을 사용할 수 없습니다. JPA 쿼리. 실제로 필요한 경우 createQuery 대신 createNativeQuery을 사용할 수 있습니다.

+0

변수 'query'의 값을 인쇄하여 쿼리를 디버그하려고합니다. – Omesh

+0

쿼리의 값이 디버그 창에 올바른지 확인하십시오. – brainydexter

+0

끝에 ':'없이 세미콜론으로 편집 된 쿼리를 시도하십시오 – Omesh