postgresql上Hibernate的DetachedCriteria同时添加addOrder和Projections.rowCount()运行出错。
来源:互联网 发布:win10 自动优化 编辑:程序博客网 时间:2024/06/05 10:02
使用Hibernate操作postgresql,一般情况下在带分页的页面,用DetachedCriteria查询返回页面需要的数据总条数和一页的数据量。
以下代码运行时会出错:
DetachedCriteria criteria = DetachedCriteria.forClass(***);criteria.addOrder(Order.desc("hostName"));criteria.setProjection(Projections.rowCount());这个可能和数据库有关,oracle上没问题。
在postgresql上执行一下hibernate生成的sql,报错如下:
SQL Error: ERROR: column "ci_server_list.host_name" must appear in the GROUP BY clause or be used in an aggregate functionLINE 1: select count(*) from ci_server_list order by host_name ^
果真,在select count(*)里面不能用 order by。
解决的办法如下:
public Integer getRowCountByCriteria(DetachedCriteria detachedCriteria) throws Exception { Criteria criteria = detachedCriteria.getExecutableCriteria(this.getSession()); List orderEntrys = new ArrayList(); Field field = CriteriaImpl.class.getDeclaredField("orderEntries"); field.setAccessible(true); orderEntrys = (List) field.get(criteria); field.set(criteria,new ArrayList()); criteria.setProjection(Projections.rowCount()); int totalCount = Integer.valueOf(criteria.uniqueResult().toString()); //clean criteria.setProjection(null); field.set(criteria,orderEntrys); return totalCount; }
用反射强行把orderEntrys清除,得到正确结果后再设置回去。
注意对私有属性,一定要先
field.setAccessible(true);
才能正常运行。
- postgresql上Hibernate的DetachedCriteria同时添加addOrder和Projections.rowCount()运行出错。
- 关于Hibernate的DetachedCriteria查询的addOrder问题的解决办法
- Hibernate中使用detachedCriteria.addOrder(Order.desc 错误 hibernate排序
- hibernate中 criteria.setProjection(Projections.rowCount()).uniqueResult()为null的Bug
- Hibernate Criteria 查询---addOrder用法添加排序
- Hibernate Criteria 查询---addOrder用法添加排序
- hibernate的Projections用法
- Hibernate的查询 标准(Criteria--Projections)查询----- 聚合和分组
- hibernate中Projections的方法
- rowcount 和 @@rowcount 的用法
- Hibernate的Criteria和DetachedCriteria 查询
- hibernate 的DetachedCriteria用法
- hibernate中Criteria和DetachedCriteria
- Hibernate的Criteria 的Criteria和DetachedCriteria得用法:
- Hibernate中DetachedCriteria和Criteria的完整用法
- Hibernate中Criteria和DetachedCriteria的作用是什么
- Hibernate中Criteria和DetachedCriteria的完整用法
- Hibernate中DetachedCriteria的使用
- 读取数据库Image格式图片并显示
- python源码中的取模
- 硬盘安装SuSE
- Android系列之二十四 -- home screen
- SUSE笔记:安装GTK+
- postgresql上Hibernate的DetachedCriteria同时添加addOrder和Projections.rowCount()运行出错。
- Android系列之Post图片和数据
- 缓存在ASP.NET应用程序中的应用
- linux 安装gtk+-2.10.0
- 歌手文件(XML)
- Android系列之Intent传递对象的两种方法
- 毕业生注意了:《报到证》的作用
- java 静态方法的重载
- Android系列之如何使用Alarm