我有以下查询(使用jpa 2.0):
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();
其中package具有以下属性:
Package
- id
- name
- mPrice
- vPrice
- duration
在JPA查询中,当我尝试执行它时,它会在ORDER BY子句中抱怨“=”运算符。有没有办法解决它?
这是我得到的例外:
org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node:
答案 0 :(得分:1)
您不能在order by
子句中使用带有JPA查询的'='。如果您确实需要,可以使用createNativeQuery
代替createQuery
。
答案 1 :(得分:0)
您需要使用=
作为比较运算符:
SELECT p.id, p.name
FROM package p
ORDER BY (p.id = idPackage) DESC, (p.mPrice+p.vPrice) DESC
LIMIT 10;
编辑:尝试:
String query = "
SELECT p.id, p.name
FROM package p
ORDER BY (p.id = idPackage) DESC, (p.mPrice+p.vPrice) DESC
LIMIT 10 ";