Java 如何在ORDERBY子句中指定运算符?
我有以下查询(使用JPA2.0): 其中,包具有以下属性: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
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'的值和我的错误来调试查询!这是一个编译错误,如果没有分号,代码将无法编译。我的代码中有分号。这有文档记录吗?有。该模式中没有运算符。是否在某个地方记录了此操作?是的。该模式中没有运算符。