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

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

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

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    我這里把代碼貼一下:
      
    Java code  @Override
      
    public
    int countAllSubject() {
        Session session
    = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
       
    return ((Long) session.createQuery(
            
    "select count(*) from Post where idParent=0").iterate().next())
            .intValue();
      }



      
    在我的機(jī)器上,用Long作為返回值,運(yùn)行正常,如果改成Integer,則報(bào)如下錯(cuò)誤
    Java codetype Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling    this
    request.

    exception

    org.apache.jasper.JasperException: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
        org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:
    522)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
    416)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
    337)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:
    266)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:
    803)

    root cause

    java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
        net.java2000.notepad.service.impl.hibernate.PostServiceHibernateImpl.countAllSubject(PostServiceHibernateImpl.java:
    24)
        org.apache.jsp.jsph.index_jsp._jspService(index_jsp.java:
    93)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:
    70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:
    803)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
    374)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
    337)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:
    266)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:
    803)

    note The full stack trace of the root cause is available in the Apache Tomcat
    /6.0.16 logs.


      
      
    但是,有幾個(gè)網(wǎng)友卻是正好相反,他們直接運(yùn)行報(bào)
      
    java.lang.ClassCastException: java.lang.Integer  
      
    改成Integer卻正常了。
      
      
    希望大家使用Hibernate比較熟悉的人,確認(rèn)一下,大家隨意使用 count(*) 然后讀取看看,到底是Integer,還是 Long



    解決方案:
    關(guān)于在Hibernate里使用select count(*) 返回值的問題說明
    由于我使用的是Hibernate 3.2版本,經(jīng)確認(rèn),這個(gè)版本已經(jīng)把以前返回 Integer的改成了 Long,
    因?yàn)镴PA里面的返回值規(guī)定是Long, Hibernate為了兼容這個(gè),所以修改了返回值。
      
    如果你從Hibernate 3.0.x/3.1.x升級(jí)到最新的3.2版,一定要注意,3.2版的很多sql函數(shù)如count(), sum()的唯一返回值已經(jīng)從Integer變?yōu)長ong,如果不升級(jí)代碼,會(huì)得到一個(gè)ClassCastException。
      
    這個(gè)變化主要是為了兼容JPA,可以在hibernate.org的最新文檔中找到說明。
      
    Hibernate Team也提供了一個(gè)與原來兼容的解決方案:
      
       Configuration classicCfg = new Configuration();
       classicCfg.addSqlFunction( "count", new ClassicCountFunction());
       classicCfg.addSqlFunction( "avg", new ClassicAvgFunction());
       classicCfg.addSqlFunction( "sum", new ClassicSumFunction());
       SessionFactory classicSf = classicCfg.buildSessionFactory();
    當(dāng)然最好統(tǒng)一轉(zhuǎn)換成Number然后獲取
    主站蜘蛛池模板: 亚洲精品视频专区| 1000部拍拍拍18勿入免费视频下载 | 国产一级片免费看| 日韩一级免费视频| 久久国产高潮流白浆免费观看| 九九免费精品视频在这里| 久久精品国产亚洲AV忘忧草18| 久久精品国产亚洲AV果冻传媒| 四虎免费影院4hu永久免费| 99热在线精品免费全部my| 久久久久久成人毛片免费看| 久久一区二区三区免费| 色天使亚洲综合一区二区| 国产精品亚洲а∨无码播放 | 亚洲AV日韩AV永久无码下载| 亚洲欧洲中文日韩久久AV乱码| 免费人成激情视频在线观看冫| 特级毛片A级毛片100免费播放| 亚洲成AV人影片在线观看| 亚洲国产av美女网站| 天堂亚洲免费视频| 国产网站在线免费观看| 妞干网在线免费观看| 男人的好看免费观看在线视频 | 麻豆亚洲av熟女国产一区二| 日韩免费a级在线观看| 黄页网站在线观看免费高清| 波多野结衣免费在线观看| 最近免费中文字幕高清大全| 午夜免费啪视频在线观看| 精品在线免费观看| 久久久久久国产精品免费免费男同 | 亚洲熟女乱色一区二区三区 | 黄瓜视频高清在线看免费下载| 国产在线a免费观看| 99视频全部免费精品全部四虎 | 亚洲激情视频网站| 亚洲午夜精品一区二区公牛电影院 | 狠狠躁狠狠爱免费视频无码| 久久久久久噜噜精品免费直播| 一级毛片aa高清免费观看|