首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JPQL创建查询-查询语法异常

问使用JPQL创建查询-查询语法异常
EN

Stack Overflow用户
提问于 2010-11-17 23:34:34
回答 2查看 2.4K关注 0票数 2

当我运行方法:dao.query("SELECT p FROM Profile p WHERE p.group = :id ORDER BY p.datestamp :key", map);时,我得到以下错误:

org.hibernate.hql.ast.QuerySyntaxException:意外令牌::在第1行附近,第93列从配置文件p中选择p,其中p.group =:IDOrderbyp.datestamp :key

以下是查询方法的实现;有人看到了什么问题吗?

代码语言:javascript
复制
public List<?> query(String criteria, HashMap<String, ?> args) {
        Query sqlQuery = this.em.createQuery(criteria);
        Set<String> keys = args.keySet();
        Iterator<String> iter = keys.iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            sqlQuery.setParameter(key, args.get(key));
        }
        return sqlQuery.getResultList();
    }
EN

回答 2

Stack Overflow用户

发布于 2010-11-18 18:36:24

不能使用参数指定排序方向,因为参数不能用于查询的任意位置。来自JPA规范:

输入参数只能在查询的WHERE子句或HAVING子句中使用。

因此,在JPA1.0中,您必须手动构建带有适当ORDER子句的查询字符串。

在JPA2.0中,您可以使用条件API来构造动态查询。

票数 4
EN

Stack Overflow用户

发布于 2010-11-17 23:47:24

我想你需要在ORDER BY p.datestamp之后和:key之前用逗号

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4210308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档