Java 如何在ORDERBY子句中指定运算符?

Java 如何在ORDERBY子句中指定运算符?,java,mysql,hibernate,jpa,jpa-2.0,Java,Mysql,Hibernate,Jpa,Jpa 2.0,我有以下查询(使用JPA2.0): 其中,包具有以下属性: Package - id - name - mPrice - vPrice - duration 在JPA查询中,当我尝试执行它时,它会抱怨ORDERBY子句中的“=”运算符。有没有办法绕过它 这是我得到的例外: org.springframework.dao.InvalidDataAccessApiUsageException:org.hibernate.hql.internal.ast.QuerySyntaxExcept

我有以下查询(使用JPA2.0):

其中,包具有以下属性:

Package
 - id
 - name
 - mPrice
 - vPrice
 - duration
在JPA查询中,当我尝试执行它时,它会抱怨ORDERBY子句中的“=”运算符。有没有办法绕过它

这是我得到的例外:


org.springframework.dao.InvalidDataAccessApiUsageException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外的ast节点:

您需要使用比较运算符
=

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 ";

您需要使用比较运算符
=

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 ";

您不能在JPA查询中使用
order by
子句中的“=”。如果您确实需要,您可以使用
createNativeQuery
代替
createQuery

您不能在JPA查询中使用
order by
子句中的“=”。如果你真的需要它,你可以用
createNativeQuery
来代替
createQuery

为什么你在那里有
=
呢?我在这里学到了:很好,你找到了。我想指出一下。你为什么在那里有那个
=
?我在这里了解到了:很好,你找到了。我要指出这一点。试着通过在这里打印变量'query'的值和我的错误来调试查询!这是一个编译错误,如果没有分号,代码将无法编译。我的代码中有分号。请尝试通过在此处打印变量'query'的值和我的错误来调试查询!这是一个编译错误,如果没有分号,代码将无法编译。我的代码中有分号。这有文档记录吗?有。该模式中没有运算符。是否在某个地方记录了此操作?是的。该模式中没有运算符。