3
中按表达式排序PostgreSQL和MySQL提供了在SQL查询中将表达式写入ORDER BY
子句。它允许按列排序项目,但特殊值位于顶部。 SQL看起来像这样。 (在Postgres中工作)如何写在JPQL
select * from article order by id = 4, id desc;
现在我想写在JPQL中,但它不起作用。我的尝试是:
@NamedQuery(name = "Article.special", query = "SELECT a FROM Article a ORDER BY (a.id = :id) DESC, a.id DESC")
这是带有Hibernate驱动程序的JPA 1.0。应用程序服务器在部署时引发此异常。
ERROR [SessionFactoryImpl] Error in named query: Article.special
org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: = near line 1, column 73 [SELECT a FROM cz.cvut.fel.sk.model.department.Article a ORDER BY (a.id = :id) DESC, a.id DESC]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
非常感谢。
什么是'orderElement`是什么意思?它只是列的名称,或者它可以是表达式?所以第一个选项是使用本机查询?我不想要它。第二个选择是好的,我知道但是并不能解决我的问题。 – Gaim 2010-12-08 13:14:29