1

我有以下查询(使用 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
 - id
 - name
 - mPrice
 - vPrice
 - duration

在 JPA 查询中,当我尝试执行它时,它会抱怨 ORDER BY 子句中的“=”运算符。有什么办法可以绕过吗??

这是我得到的例外:

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

4

2 回答 2

1

您不能在order byJPA 查询中使用 '=' in 子句。如果你真的需要,你可以createNativeQuery改用createQuery.

于 2012-08-06T09:25:04.230 回答
0

您需要使用=which 是比较运算符:

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 ";
于 2012-08-06T09:15:08.790 回答