隨筆 - 3  文章 - 8  trackbacks - 0
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(1)

          隨筆檔案(8)

          文章檔案(1)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          一個工程,Hibernate3.1 + MySQL4.1,本來沒問題,最近開發機換了,出現問題:
          在開發機上運行時,報錯:
          java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
          錯在這一行:
          int count = ((Integer)o[0]).intValue();
          但是在服務器上運行時正常。
          把這一行改為
          int count = ((Long)o[0]).intValue();
          后,在開發機上運行時正常,但是在服務器上運行時報錯,錯誤內容就是反過來的:整型不能轉換成常整型。

          出錯的行所在的函數:
              /** *//**
               * 總排行榜
               * 
          @return List類型,原本是ArrayList型,元素是包含項目序號和名稱的ArrayList型
               
          */
              
          public List getZong() {
                  ArrayList alist 
          = new ArrayList();
                  org.hibernate.Session s 
          = HibernateSessionFactory.currentSession();
                  String hql 
          = "select count(x.xmh),x,m from Xzb x,Xmb m where x.xmh=m.xh and m.sc=0 group by x.xmh order by col_0_0_ desc";
                  org.hibernate.Query query 
          = s.createQuery(hql);
                  query.setMaxResults(
          7);
                  List list 
          = query.list();
                  Object[] o 
          = null;
                  
          for (Iterator its = list.iterator(); its.hasNext(); ) {
                      o 
          = (Object[])its.next();
                      Xzb xzb 
          = (Xzb)o[1];
                      ArrayList tmplist 
          = new ArrayList();
                      Xmb xmb 
          = xzb.getXmh();
                      tmplist.add(xmb.getXh());
                      tmplist.add(xmb.getXmm());

                      
          int count = ((Integer)o[0]).intValue();    //int count = ((Long)o[0]).intValue();

                      tmplist.add(count);
                      alist.add(tmplist);
                  }
                  HibernateSessionFactory.closeSession();
                  
          return alist;
              }



          后來注意到現在用的機器的cpu是DualCore Pentium E2140,是64位的,而服務器是Xeon Prestonia 2.8GHz,是32位。很可能是64位與32位的問題,可能64位機上的整型到了32位機上就被認為是長整型。經詢問后得知,把出錯行改為:
          ((Number)o[0]).intValue();
          用Integer和Long的超類Number,問題解決。
          原來以前聽說的類定義盡量寬泛一些是這個好處啊。
          posted on 2008-04-14 18:50 cccp21 閱讀(594) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 平江县| 建阳市| 宝丰县| 新巴尔虎右旗| 邵东县| 满城县| 凤冈县| 吴桥县| 乌恰县| 尉氏县| 黎平县| 紫云| 桓台县| 丰都县| 平武县| 玉门市| 安岳县| 沂源县| 九江市| 玉田县| 柳林县| 文安县| 华坪县| 长沙市| 光泽县| 阿克苏市| 精河县| 都匀市| 永春县| 石棉县| 和林格尔县| 兴海县| 盘山县| 肃北| 宁国市| 定陶县| 龙陵县| 榆中县| 保定市| 黑龙江省| 广德县|