DetachedCriteria 分页Projection取消聚合条件
生活随笔
收集整理的這篇文章主要介紹了
DetachedCriteria 分页Projection取消聚合条件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
@Override
??? public PageBean findPaginated(DetachedCriteria detachedCriteria,PageBean pageBean) {
?? ??? ?// TODO 今天記得修改 去掉DetachedCriteria中的projection
?? ??? ?//根據(jù)該條件獲得總記錄數(shù)
?????? Long total=this.getRowCount(detachedCriteria);
?????? List<T> datas=this.findByCriteria(detachedCriteria, pageBean.getOffset(), pageBean.getPageSize());
??????? pageBean.setDatas(datas);
??????? pageBean.setTotal(total);
?? ??? ?return pageBean;
??? }
???
?// 使用指定的檢索標準獲取滿足標準的記錄數(shù)
??? public Long getRowCount(final DetachedCriteria detachedCriteria) {
?? ??? ?return getHibernateTemplate().execute(new HibernateCallback() {
?? ??? ??? ?@Override
?? ??? ??? ?public Object doInHibernate(Session session)
?? ??? ??? ??? ??? ?throws HibernateException, SQLException {
?? ??? ??? ??? ?Criteria criteria=detachedCriteria.getExecutableCriteria(session);
?? ??? ??? ??? ?CriteriaImpl criteriaImpl=(CriteriaImpl) criteria;
?? ??? ??? ??? ?Projection projection=criteriaImpl.getProjection();
?? ??? ??? ??? ?logger.debug("SQL:"+Projections.rowCount());
?? ??? ??? ??? ?Long totalCount=(java.lang.Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
?? ??? ??? ??? ?criteria.setProjection(projection);
?? ??? ??? ??? ?if(projection==null){
?? ??? ??? ??? ??? ?criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?return totalCount;
?? ??? ??? ?}
?? ??? ?});
??? public PageBean findPaginated(DetachedCriteria detachedCriteria,PageBean pageBean) {
?? ??? ?// TODO 今天記得修改 去掉DetachedCriteria中的projection
?? ??? ?//根據(jù)該條件獲得總記錄數(shù)
?????? Long total=this.getRowCount(detachedCriteria);
?????? List<T> datas=this.findByCriteria(detachedCriteria, pageBean.getOffset(), pageBean.getPageSize());
??????? pageBean.setDatas(datas);
??????? pageBean.setTotal(total);
?? ??? ?return pageBean;
??? }
???
?// 使用指定的檢索標準獲取滿足標準的記錄數(shù)
??? public Long getRowCount(final DetachedCriteria detachedCriteria) {
?? ??? ?return getHibernateTemplate().execute(new HibernateCallback() {
?? ??? ??? ?@Override
?? ??? ??? ?public Object doInHibernate(Session session)
?? ??? ??? ??? ??? ?throws HibernateException, SQLException {
?? ??? ??? ??? ?Criteria criteria=detachedCriteria.getExecutableCriteria(session);
?? ??? ??? ??? ?CriteriaImpl criteriaImpl=(CriteriaImpl) criteria;
?? ??? ??? ??? ?Projection projection=criteriaImpl.getProjection();
?? ??? ??? ??? ?logger.debug("SQL:"+Projections.rowCount());
?? ??? ??? ??? ?Long totalCount=(java.lang.Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
?? ??? ??? ??? ?criteria.setProjection(projection);
?? ??? ??? ??? ?if(projection==null){
?? ??? ??? ??? ??? ?criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?return totalCount;
?? ??? ??? ?}
?? ??? ?});
??? }
? public List findByCriteria(DetachedCriteria criteria, int firstResult,
??????????? int maxResults) {
??????? return getHibernateTemplate().findByCriteria(criteria, firstResult,
??????????????? maxResults);
??? }
這個問題糾結我好長時間,每次查詢出來總行數(shù)后,在查詢就不能查詢實體的信息了即使setProjectinos為null,但是查詢出來的結果在有關聯(lián)的情況下是List<Object[]>類型的
也就是說DetachedCriteria本身還是有問題,具體的原因我說不出來.但是這也是一種解決方案.希望對大家也有所幫助,
這樣就可以將DetachedCriteria進行封裝,在分頁條件下查詢總行數(shù),
總結
以上是生活随笔為你收集整理的DetachedCriteria 分页Projection取消聚合条件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OCP 042全真试题讲解
- 下一篇: heartbeat原理介绍