当我运行方法: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
以下是查询方法的实现;有人看到了什么问题吗?
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();
}发布于 2010-11-18 18:36:24
不能使用参数指定排序方向,因为参数不能用于查询的任意位置。来自JPA规范:
输入参数只能在查询的WHERE子句或HAVING子句中使用。
因此,在JPA1.0中,您必须手动构建带有适当ORDER子句的查询字符串。
在JPA2.0中,您可以使用条件API来构造动态查询。
发布于 2010-11-17 23:47:24
我想你需要在ORDER BY p.datestamp之后和:key之前用逗号
https://stackoverflow.com/questions/4210308
复制相似问题