<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

    3G 手機開發網

       :: 首頁 :: 聯系 :: 聚合  :: 管理
      99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
    今天上午回來設計了一點新聞發布系統周邊的功能,并實現了對新聞進行重新索引的功能。
    但同時在列出相關新聞的時候遇到了麻煩。就是原本運行好好的分頁查詢代碼,居然有個小蟲子跑出來,
    很是令人不爽。說來也慚愧,Hibernate也用了那么長時間了。可對底層API卻很不屬性。
    查了下網絡,把自己的一知半解說出來。

    bug起源。
    看看代碼:
    return (PageSupport) getHibernateTemplate().execute(
                    new HibernateCallback() ...{
                        public Object doInHibernate(Session session)
                                throws HibernateException ...{
                            Criteria criteria = detachedCriteria
                                    .getExecutableCriteria(session);
                         
                            
                            logger.debug("SQL: " + Projections.rowCount());
                            
                            
                             
                            //執行查詢
                            int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();

                         
                         
                            
                            
                            List items = criteria.setFirstResult(startIndex)
                            .setMaxResults(pageSize).list();
                    
                            PageSupport ps = new PageSupport(items, totalCount,
                                    pageSize, startIndex);
                            
                            return ps;
                        }
                    }, true);

    相信大家對上面的代碼也很熟悉了,這個代碼第一次運行的時候沒問題。
    等你去拿第2頁的時候,就提示說出現NullPointer。 發現是((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult())為Null, 也就是根本就拿不到表總數。
    為此我思考了好一陣子。
    后來看了別人的代碼才煥然大悟。
    看第2個代碼:
    return (PageSupport) getHibernateTemplate().execute(
                    new HibernateCallback() ...{
                        public Object doInHibernate(Session session)
                                throws HibernateException ...{
                            Criteria criteria = detachedCriteria
                                    .getExecutableCriteria(session);
                            
                            CriteriaImpl impl = (CriteriaImpl) criteria;

                            //先把Projection和OrderBy條件取出來,清空兩者來執行Count操作
                            Projection projection = impl.getProjection();
                            
                            logger.debug("SQL: " + Projections.rowCount());
                            
                            
                             
                            //執行查詢
                            int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();

                            //將之前的Projection和OrderBy條件重新設回去
                            criteria.setProjection(projection);
                            if (projection == null) ...{
                                criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
                            }
                         
                            
                            
                            List items = criteria.setFirstResult(startIndex)
                            .setMaxResults(pageSize).list();
                    
                            PageSupport ps = new PageSupport(items, totalCount,
                                    pageSize, startIndex);
                            
                            return ps;
                        }
                    }, true);



    爬蟲工作室 -- 專業的手機軟件開發工作室
    3G視線 -- 專注手機軟件開發
    posted on 2007-04-30 08:46 3G工作室 閱讀(3050) 評論(0)  編輯  收藏 所屬分類: j2ee
    主站蜘蛛池模板: 亚洲av无码一区二区三区天堂古代 | 亚洲 欧洲 视频 伦小说| 久久久久国产免费| 久久久久亚洲AV无码专区首| a级黄色毛片免费播放视频| 亚洲精品无码久久千人斩| 国偷自产一区二区免费视频| 亚洲韩国精品无码一区二区三区| 天黑黑影院在线观看视频高清免费| 黑人大战亚洲人精品一区| 国产精品免费无遮挡无码永久视频| 亚洲天堂中文资源| 在人线av无码免费高潮喷水| 亚洲精品无码中文久久字幕| 浮力影院第一页小视频国产在线观看免费 | 亚洲一区精品中文字幕| 最近中文字幕大全中文字幕免费 | a视频在线观看免费| 亚洲av日韩av高潮潮喷无码| 99久久精品国产免费| 亚洲一区二区三区免费视频| 全免费a级毛片免费**视频| 色吊丝性永久免费看码 | 精品亚洲456在线播放| 国产在线19禁免费观看| 精品久久久久久无码免费| 亚洲小视频在线观看| 女人被男人桶得好爽免费视频| 青娱乐在线免费观看视频| 亚洲AV无码一区二区乱孑伦AS| 免费黄色福利视频| 无码人妻一区二区三区免费视频| 精品亚洲永久免费精品| 成人无码区免费视频观看 | 亚洲成Av人片乱码色午夜| 7723日本高清完整版免费| 婷婷亚洲综合一区二区 | 一本色道久久88—综合亚洲精品| 亚洲高清无码专区视频| 亚欧色视频在线观看免费| 青青草97国产精品免费观看|