无花的空间--http://wuhua.3geye.net-- 您今天UCWEB了吗?--http://www.ucweb.com

当你来到我的空间的时候,你会看到很多Google,Nokia,Mobile,J2ME ,Android,3G,无线开发,手机软件,手机软件开发等与Google,手机相关的文章,你千万不要惊讶。这就是我一个专注Google,无线开发的无花。传播知识,分享经验,技术交流是我开空间的直接目的。当然如果有项目开发,我还是很希望赚点外快的。

饶荣庆ID:gooogledev
36864次访问,排名3065好友11人,关注者15
J2EE 2年的开发时间,
J2ME 2年的开发时间
gooogledev的文章
原创 78 篇
翻译 0 篇
转载 3 篇
评论 200 篇
无花的公告

人要吃很多苦才可以长大!

踏实平凡人应该遵守的原则!

与我TM

gooogledev@gmail.com

友情链接

我的j2me创意

Wap浏览器的源代码

用自己写的rms引擎写的电话本

RSS订阅此博客  
用抓虾订阅此博客
用google订阅此博客
用bloglines订阅此博客
    网络封神榜 | 饶荣庆
最近评论
liu:liuwenbin.cn@gmail.com
发一个xdoclet-1.2.1.jar,谢谢
yg:
[url=http://www.item4trade.com/]wow gold[/url]
[url=http://www.item4trade.com/]power leveling[/url]
[url=http://www.item4trade.com/]powerleveling[/url]
[url=http://www.item4tra……
weiguochuli:if(flags) flags可是boolean型的数组啊,报错的!还有如果选中了两个值但images.size() 的值是3的话第一个值会得到两遍的。
路过:没想到百度到你这里来了
zryStar:嘿嘿,向楼主学习,对这行了解不是很深,希望学到东西
文章分类
收藏
    相册
    j2me创意图片
    j2me教程
    我的照片
    我的链接
    3G视线
    EasyMF J2ME框架
    Lucene中国
    我的Google
    无花的博客
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 解决HIbernate分页问题获取表总行数的小Bug收藏

    新一篇: 关于新闻发布系统,侧栏,与底栏的设计构想 | 旧一篇: 用自己写的rms引擎写的电话本

    今天上午回来设计了一点新闻发布系统周边的功能,并实现了对新闻进行重新索引的功能。
    但同时在列出相关新闻的时候遇到了麻烦。就是原本运行好好的分页查询代码,居然有个小虫子跑出来,
    很是令人不爽。说来也惭愧,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);

    发表于 @ 2007年04月29日 15:04:00|评论(loading...)|编辑

    新一篇: 关于新闻发布系统,侧栏,与底栏的设计构想 | 旧一篇: 用自己写的rms引擎写的电话本

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 无花