<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 手機(jī)開發(fā)網(wǎng)

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

    bug起源。
    看看代碼:
    return (PageSupport) getHibernateTemplate().execute(
                    new HibernateCallback() ...{
                        public Object doInHibernate(Session session)
                                throws HibernateException ...{
                            Criteria criteria = detachedCriteria
                                    .getExecutableCriteria(session);
                         
                            
                            logger.debug("SQL: " + Projections.rowCount());
                            
                            
                             
                            //執(zhí)行查詢
                            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);

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

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

                            //將之前的Projection和OrderBy條件重新設(shè)回去
                            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);



    爬蟲工作室 -- 專業(yè)的手機(jī)軟件開發(fā)工作室
    3G視線 -- 專注手機(jī)軟件開發(fā)
    posted on 2007-04-30 08:46 3G工作室 閱讀(3051) 評(píng)論(0)  編輯  收藏 所屬分類: j2ee
    主站蜘蛛池模板: 另类专区另类专区亚洲| 最近最新的免费中文字幕| 无码一区二区三区亚洲人妻| 久久久久亚洲?V成人无码| 91精品手机国产免费| 国产高潮流白浆喷水免费A片 | 亚洲二区在线视频| 亚洲黄色在线网站| 亚洲成AV人片在线观看WWW| 亚洲午夜精品一级在线播放放| 好男人看视频免费2019中文| 全部免费毛片在线播放| 三上悠亚电影全集免费| 在线播放免费人成视频网站| 亚洲精品日韩一区二区小说| 久久久国产亚洲精品| 亚洲国产美女精品久久久久| 亚洲国产二区三区久久| 亚洲va国产va天堂va久久| 亚洲无人区午夜福利码高清完整版| 亚洲国产成人精品女人久久久| 日本免费一区尤物| 免费大黄网站在线看| 国产精品久免费的黄网站| 国产美女精品久久久久久久免费| 毛片免费观看的视频| 日韩午夜免费视频| 国产一区二区三区免费看| 亚洲国产成人精品久久久国产成人一区二区三区综 | 免费毛片a线观看| 久久久高清日本道免费观看| 黄页免费在线观看| 亚洲一区免费视频| 免费无遮挡无码视频网站| 四虎永久在线精品免费观看地址 | 亚洲综合久久久久久中文字幕| 亚洲性无码av在线| 亚洲国产高清国产拍精品| 免费无码一区二区| 99精品热线在线观看免费视频| 免费爱爱的视频太爽了|