難能之理宜停,難處之人宜厚,難處之事宜緩,難成之功宜智。

          “道”就是指要自己才能走遍天下,“德”指兩個人要直心相對.
          posts - 13, comments - 1, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          之前都是用Hibernate2.1的,原來也沒想著升級,那天突然發(fā)現(xiàn)項目里要做批量刪除的功能,心想不如升級Hibernate3體驗一下罷!
          誰知把lib一改,全亂了!首先是hibernate包的路徑改了,要把所有的“net.sf.hibernate”替換為“org.hibernate”。
          然后就是處理下面幾個廢棄的方法:find()、iterate()、filter()、delete(String hqlSelectQuery)和saveOrUpdateCopy()。Hibernate3一律采用createQuery()方法來執(zhí)行所有的查詢語句,采用DELETE 查詢語句來執(zhí)行批量刪除,采用merge()方法來替代 saveOrUpdateCopy()方法。——又是一次全文搜索和替換!
          這樣,IDE基本沒有報錯信息了!但一旦運行就會報Connection timed out,后來發(fā)現(xiàn)hibernate的config文件和map文件都必須把dtd改為3.0。否則xerces會到hibernate.org上找3.0dtd,如果你沒有聯(lián)網(wǎng),則會報出java.net.ConnectException。
          另外,還要記得添加antlr-2.7.5H3.jar,要不會報java.lang.NoClassDefFoundError: antlr/ANTLRException。
          花了大半天時間,系統(tǒng)基本正常了!粗略檢查了一下,瀏覽和修改功能都正常,但有一個問題,竟然無法插入新記錄啊!
          出現(xiàn)的異常為:
          org.hibernate.exception.ConstraintViolationException: could not insert
          后來在所有元素中設置: default-lazy="false"就可以了。
          值得一提的是,如果只想對已有的程序進行簡單的升級,并且希望仍然調(diào)用Hibernate2.1中Session的一些接口,可以采用以下方式創(chuàng)建Session實例:
          org.hibernate.classic.Session session=sessionFactory.openSession();
          這樣的改動會小很多~~~當然如果希望在程序中完全使用Hibernate3.0,就只能采用以下方式創(chuàng)建Session實例:org.hibernate.Session session=sessionFactory.openSession();


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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 高尔夫| 托克托县| 西畴县| 和龙市| 奈曼旗| 黑水县| 武平县| 阆中市| 颍上县| 罗江县| 东安县| 西城区| 芮城县| 苍南县| 通化县| 抚顺市| 化德县| 红桥区| 定日县| 滁州市| 金坛市| 固阳县| 博湖县| 广元市| 砀山县| 湾仔区| 舟山市| 福建省| 中卫市| 上思县| 剑川县| 永兴县| 平定县| 农安县| 冷水江市| 南华县| 香港| 龙岩市| 中江县| 大埔县| 白河县|