導航

          統計
          • 隨筆 - 47
          • 文章 - 1
          • 評論 - 105
          • 引用 - 0

          常用鏈接

          留言簿(4)

          隨筆分類(120)

          隨筆檔案(47)

          文章檔案(1)

          相冊

          技術聯接

          積分與排名

          • 積分 - 148664
          • 排名 - 420

          最新評論

          閱讀排行榜

          評論排行榜

           
               今天寫了個程序 Spring整合Hibernate 使用Spring中的HibernateTemplate 通過配置程序可以運行起來 并可以操作數據庫 但程序執行過程中會有異常 不知道是什么錯誤 一下是程序執行的異常
          Hibernate: insert into test.student (STUNAME, AGE, SEX, PHONE) values (????)
          java.lang.RuntimeException
              at com.stu.server.StudentServer.addStudentByCondition(StudentServer.java:
          30)
              at com.stu.server.StudentServer$$FastClassByCGLIB$$8fef4d1a.invoke(
          <generated>)
              at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:
          149)
              at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:
          696)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
          149)
              at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:
          106)
              at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
          171)
              at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:
          631)
              at com.stu.server.StudentServer$$EnhancerByCGLIB$$f5f4d830.addStudentByCondition(
          <generated>)
              at com.stu.test.Test.main(Test.java:
          33)
          Hibernate: update test.student set STUNAME
          =?, AGE=?, SEX=?, PHONE=? where ID=?
          還麻煩各位幫忙指點一下 程序我上傳上來了,另外還請哪個大哥幫忙指出這程序的不足之處

          程序下載地址:http://www.aygfsteel.com/Files/lifenote/HibernateInSpring.rar
          posted on 2007-12-07 10:20 LifeNote 閱讀(1792) 評論(11)  編輯  收藏 所屬分類: JavaHibernateSpring
          Comments
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            LifeNote
            Posted @ 2007-12-07 11:12
            我知道異常了 我使用的是spring的聲明事務 當年齡小于30的時候就拋異常并且回滾事務 可現在并沒有回滾 還麻煩個位看看 多謝
            getStudentDAO().save(stu);
            stu.setAge( stu.getAge()+10);
            if(stu.getAge()<30){ //這里拋個異常就回滾了 不用rollback了
            throw new RuntimeException();
            }  回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤 [未登錄]
            flustar
            Posted @ 2007-12-07 11:28
            建議你把hbm文件中的 catalog="test" 去掉 另外你的hibernate.cfg.xml是多余的  回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            Tiger F
            Posted @ 2007-12-07 11:32
            兩個問題:
            既然使用了spring的聲明事物,就不應該再自己聲明事物了。spring的聲明事物就是檢查是否有異常出現來決定最后是提交還是回滾的,所以必須使用異常。
            所以你的server程序應該寫為:(似乎根本不需要回滾)
            public void addStudentByCondition(Student stu){
            if(stu.getAge()>=30)
            getStudentDAO().save(stu);
            }
            如果因為有其他邏輯需要回滾的話,應該這樣:
            public void addStudentByCondition(Student stu){
            if(stu.getAge()<30)
            throw new MyBizException(); // 建議自定義一個有業務意義的異常
            getStudentDAO().save(stu);
            }

            另一個問題,你的Dao類在使用templage方法是都自己做了異常處理,但是你的異常處理無實質內容,這個做法會影響到事物的。如果你不知道應該如何處理這些異常,最好就是不要管他。
              回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            LifeNote
            Posted @ 2007-12-07 11:34
            catalog="test" 這個只是數據庫的名字啊  回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            LifeNote
            Posted @ 2007-12-07 11:38
            既然我在
            if(stu.getAge()<30){ //這里拋個異常就回滾了 不用rollback了
            throw new RuntimeException();
            }這里拋了異常為什么程序還是沒有回滾呢  回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            Tiger F
            Posted @ 2007-12-07 14:41
            如果你的程序還是原來那個樣子,雖然拋出了異常也是被你自己捕獲了,并沒有被spring捕獲到。
            spring既然不知道發生了異常,當然不會回滾事物了。
              回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            LifeNote
            Posted @ 2007-12-07 16:28
            請問那要如何處理事務呢 我有些糊涂了 麻煩 把那程序修改后把代碼貼上來 好么 十分感謝 學習中  回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            Tiger F
            Posted @ 2007-12-07 16:30
            我貼了呀,上面。只要把addStudentByCondition函數的實現完整替換一下,至少是能回滾了。  回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            LifeNote
            Posted @ 2007-12-07 16:35
            您是說
            if(stu.getAge()<30)
            throw new MyBizException(); // 建議自定義一個有業務意義的異常
            getStudentDAO().save(stu);
            }

            這里new MyBizException(); 是自己捕獲了么 ?
            那這樣和你說的 這個:

            雖然拋出了異常也是被你自己捕獲了,并沒有被spring捕獲到。
            spring既然不知道發生了異常,當然不會回滾事物了。
            也沒有被spring知道啊 如何回滾呢
              回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            Tiger F
            Posted @ 2007-12-07 16:59
            public void addStudentByCondition(Student stu){
            if(stu.getAge()<30)
            throw new MyBizException(); // 可以用RuntimeException替換
            getStudentDAO().save(stu);
            }

            注意,整個addStudentByCondition函數應該就這幾行,而不是修改這三行。
            把你的try/catch之類的統統刪除。  回復  更多評論   
          • # re: Spring整合Hibernate 莫名其妙的錯誤
            LifeNote
            Posted @ 2007-12-07 17:02
            哦 明白你的意思了 十分感謝!!!  回復  更多評論   
           
          主站蜘蛛池模板: 邵阳市| 临颍县| 鱼台县| 弋阳县| 芦山县| 南靖县| 海伦市| 渝北区| 遂昌县| 肥城市| 东方市| 大石桥市| 南召县| 资中县| 日喀则市| 内丘县| 民勤县| 岗巴县| 亚东县| 古蔺县| 全州县| 南充市| 禹州市| 如皋市| 琼中| 康马县| 沾化县| 通河县| 榆林市| 内黄县| 呼和浩特市| 都昌县| 会宁县| 遂川县| 瑞丽市| 满城县| 菏泽市| 南漳县| 贵定县| 六盘水市| 微博|