Predicate order排序问题异常!

liu137756 2017-02-27 11:07:36
private Specification<Organization> buildSpecification(
final Map<String, Object> searchParams) {

Specification<Organization> spec = new Specification<Organization>() {
@Override
public Predicate toPredicate(Root<Organization> root, CriteriaQuery<?> cq,
CriteriaBuilder cb) {
Predicate allCondition = null;
String name = (String) searchParams.get("name");
String createTime = (String) searchParams
.get("createTime");
if (name != null && !"".equals(name)) {
Predicate condition = cb.like(
root.get("name").as(String.class), "%"
+ searchParams.get("name") + "%");
if (null == allCondition) {
//allCondition = cb.and(condition);
cq.where(cb.and(condition));
} else {
//allCondition = cb.and(allCondition, condition);
cq.where(cb.and(allCondition, condition));
}
}
//点列表排序
String sortName = (String) searchParams.get("sortName");
String sortOrder = (String) searchParams.get("sortOrder");

if(sortName!=null && sortOrder.equals("asc") && !"".equals(sortName)){
cq.orderBy((cb.asc(root.get(sortName).as(String.class))));
} else if(sortName!=null && sortOrder.equals("desc") && !"".equals(sortName)){
cq.orderBy(cb.desc(root.get(sortName).as(String.class)));
}

// return allCondition;
return cq.getRestriction();
}

};
return spec;
}


点击列表 传入列明 name 排序desc 出现异常
1:03:48.376 [http-8082-1] DEBUG o.h.e.jdbc.spi.SqlExceptionHelper - could not extract ResultSet [n/a]
org.postgresql.util.PSQLException: ERROR: column "organizati0_.name" must appear in the GROUP BY clause or be used in an aggregate function
位置:87
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2458) ~[postgresql-9.4.1211.jar:9.4.1211]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2158) ~[postgresql-9.4.1211.jar:9.4.1211]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:291) ~[postgresql-9.4.1211.jar:9.4.1211]
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:432) ~[postgresql-9.4.1211.jar:9.4.1211]
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:358) ~[postgresql-9.4.1211.jar:9.4.1211]
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:171) ~[postgresql-9.4.1211.jar:9.4.1211]

...全文
683 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu137756 2017-02-27
  • 打赏
  • 举报
回复
我去,发个代码问题是寻求怎么解决! 就是觉得上面代码应该怎么改才可以解决问题! 你这嘚瑟的牛头不对马嘴
望舒 2017-02-27
  • 打赏
  • 举报
回复
废话, 废话, 废话, 废话,
liu137756 2017-02-27
  • 打赏
  • 举报
回复
是下面这个意思吗? 比如查询 selet name,name1,name2 from table order by name desc 这样不行???
望舒 2017-02-27
  • 打赏
  • 举报
回复
olumn "organizati0_.name" must appear in the GROUP BY clause or be used in an aggregate function 请自行学习 group by 语法. 大意是这样的 , 查询出的 非 ordery by 字段,必须 有使用 并归函数 类似 sum avg max min xxx等

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧