<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片无码免费天天看| 亚洲第一区在线观看| 看一级毛片免费观看视频| 国产aa免费视频| 四虎永久在线精品免费一区二区| 亚洲av无码天堂一区二区三区| 国产精品亚洲综合网站| 亚洲国产av一区二区三区| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 免费播放特黄特色毛片| 亚洲av中文无码字幕色不卡 | 一本久久A久久免费精品不卡| 亚洲国产精品毛片av不卡在线| 一级A毛片免费观看久久精品| 国产亚洲精久久久久久无码AV| 另类免费视频一区二区在线观看| 亚洲最大福利视频网站| 永久免费AV无码国产网站| 国产精品亚洲精品久久精品| 亚洲男人的天堂一区二区| 99在线免费视频| 亚洲成综合人影院在院播放| 性一交一乱一视频免费看| 狠狠热精品免费观看| 亚洲成a人片在线观看无码专区| 4444www免费看| 亚洲av永久中文无码精品 | 亚洲综合视频在线观看| 女人让男人免费桶爽30分钟 | 永久免费在线观看视频| 美国毛片亚洲社区在线观看| 伊人亚洲综合青草青草久热| 天天影院成人免费观看| 国产精品亚洲一区二区三区| 亚洲av丰满熟妇在线播放| 在线不卡免费视频| 黄色免费在线网站| 亚洲第一成年网站视频| 老司机亚洲精品影院|