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

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

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

    Tauruser

    JSF will hibernate in spring.

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      24 隨筆 :: 2 文章 :: 19 評論 :: 0 Trackbacks

    日前用JasperReport制作統計報表。
    我要從數據庫中Select sum(price) from talbe獲取一些統計數據作為參數傳給JasperReport生成報表。為了達到數據本來應該有的精度,所以在數據庫中price的數據類型為decimal(20,2)。由于只是簡單地從數據庫把price,sum出來并不需要進行更進一步的復雜數據處理,所以在實現中我并沒有為table寫相應該的Pojo和hbm文件。所以在Dao層,我使用Hibernate運行SQL語句將數據檢索出來。代碼如下:

    BigDecimal?totalPrice = (BigDecimal) this .getHibernateTemplate().execute( new ?HibernateCallback() {

    ????????
    public ?Object?doInHibernate(Session?session)? throws ?HibernateException,?SQLException? {
    ????????????MonthCheckTable?monthCheckTable
    = new ?MonthCheckTable();
    ????????????
    ????????????List?rs
    = session.createSQLQuery( " select?sum(price)?from?table " ).list();
    ????????????Number?totalPrice?
    = ?(Number)rs.get( 0 );
    ????????????
    if (totalPrice == null )?totalPrice = new ?BigDecimal( 0.0 );
    ????????????????????????
    ????????????
    return ? new ?BigDecimal(totalPrice.toString());
    ????????}

    ????}
    );
    運行的時候就出現了Maping Excetion,異常棧如下:

    org.springframework.orm.hibernate3.HibernateSystemException:?No?Dialect?mapping?for?JDBC?type:?3;?nested?exception?is?org.hibernate.MappingException:?No?Dialect?mapping?for?JDBC?type:?3
    Caused?by:?org.hibernate.MappingException:?No?Dialect?mapping?
    for?JDBC?type:?3?

    出現這個原因是說服務器端的數據類型并不能和Java的BigDecimal數據類型成功映射。
    推想只要在Hibernate里把本對應的數據類型成功映射起來就可以成功執行了。
    解決案如下:
    1、新建一個MySQLServerDialect extends org.hibernate.dialect.SQLServerDialect 并在里面補充注冊新的類型映射。如下:
    public?class?MySQLServerDialect?extends?SQLServerDialect{
    ????
    public?MySQLServerDialect()?{
    ????????
    super();
    ????????registerHibernateType(Types.DECIMAL,?Hibernate.BIG_DECIMAL.getName());
    ????}

    }


    2、把Hibernate里的Dialect改成我們第一步新建的新的Dialect

    <prop?key="hibernate.dialect">com.gdnfha.atcs.common.MySQLServerDialect</prop>

    經過這兩步這后就可以正常使用SqlQuery拿到Sql Server 2005里的decimal類型了。

    在SQLServerDialect里的registerHibernateType函數,更詳細的用法請看:

    http://www.hibernate.org/hib_docs/v3/api/org/hibernate/dialect/Dialect.html#registerHibernateType(int,%20int,%20java.lang.String)
    posted on 2007-01-31 11:22 Tauruser 閱讀(2822) 評論(1)  編輯  收藏

    評論

    # 風格vbhjn 2008-01-25 01:47 飛過海健康
    y7e8duiokjkhfy8duiokl  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 欧洲乱码伦视频免费国产| 亚洲成年轻人电影网站www| 国产伦一区二区三区免费| 97人伦色伦成人免费视频| 国产1000部成人免费视频| 五月婷婷在线免费观看| 免费在线观看h片| 国产成人yy免费视频| 在线看片韩国免费人成视频| 亚洲视频免费在线看| 日本视频一区在线观看免费| 日韩免费一区二区三区在线| 国产麻豆视频免费观看| 插B内射18免费视频| 国产成人高清精品免费鸭子| 亚洲国产精品无码久久九九| 国产精品亚洲产品一区二区三区| 亚洲午夜久久久久久噜噜噜| 亚洲AV无码专区在线播放中文| 日韩亚洲Av人人夜夜澡人人爽| 亚洲国产精品成人综合色在线婷婷| 激情综合亚洲色婷婷五月| 亚洲av无码偷拍在线观看| 无码免费又爽又高潮喷水的视频| 中文字幕永久免费| 99精品视频在线视频免费观看| 国产又黄又爽又猛免费app| 国产精品免费视频播放器| 中文字幕日韩亚洲| 亚洲一区二区三区首页| 欧洲 亚洲 国产图片综合| 国产亚洲午夜精品| 在线观看片免费人成视频无码| 成年人免费的视频| 国产伦精品一区二区三区免费下载 | 日韩在线视频播放免费视频完整版| jizz在线免费播放| 91制片厂制作传媒免费版樱花| 拍拍拍又黄又爽无挡视频免费| 区久久AAA片69亚洲| 亚洲精品中文字幕无乱码|