try {
          daoManager.startTransaction();       
          
          daoManager.commitTransaction();
        } 
        catch(Exception e){
         e.printStackTrace();
        }
        finally {
          daoManager.endTransaction();
        }        
        
  }不放在finally放在哪?你就是用hibernate也是在finally里面HibernateSessionFactory.closeSession()放在finally里面是为了避免发生异常时连接,事务等没有关闭,比如在try里面..放catch里面是不好滴.那样如果没异常你不是就不关闭了??所以要放finally里面..

解决方案 »

  1.   

    那么发生异常时事务回滚又在哪里执行呢?没有rollback语句啊?难道是ibatis自己处理?
      

  2.   

    肯定啊..你看过ibatis-dao的源码了吗?肯定没有吧.在2.2.0版的包以前都是有这个包的.到了2.2.0以后就给spring管理了.在2.2.0以前..你看源码的话会发现
      public void commitTransaction();  /**
       * Ends all transactions currently started for all DAO contexts
       * managed by this  DaoManager.  If any transactions have not been
       * successfully committed, then those remaining will be rolled back.
       */If any transactions have not been
       * successfully committed, then those remaining will be rolled back.这句话就说了.如果发生异常,事务就会回滚
    问题解决..50分全是我的哟..结贴,,结贴
      

  3.   

    你程序怎么写着的,取出是3表里是2 你中间异常了没插入...      try {
              daoManager.startTransaction();  
    .............................
        
              id = this.getzdbh(".....","","",13);// 存储过程 获取id
    ..
    ..
                      form.setChr_qyid(id); 
                  insert("insertjcjl",form); //第一个操作/...  
    ..
    ...
     insert("insertjcjl",form);//第二个.....三..四...
            daoManager.commitTransaction();
            } 
            catch(Exception e){
             e.printStackTrace();
            }
            finally {
              daoManager.endTransaction();
            }       
            return b;
      }
      

  4.   

    不是这样的,我这两个过程的事务是分开的,也就是说取id的存储过程执行完了才执行insert操作,如果insert操作失败,id也必须增加,因为考虑并发问题.同时,我的存储过程里是先对当前id加1再进行提取,存储过程里使用的是sqlserver自身的事务管理,从调试情况看,该是存储过程是执行成功了的,因为返回的值已经是加1以后的值了,但问题是数据库里存储id的表的id值却未更新,不明白是怎么回事?存储过程最后用的是return @id语句!难道iBatis使用sqlserver2000存储过程有什么特殊要求?因为存储过程在系统中使用很多,尤其是多个表之间的汇总统计都只能用存储过程解决.很多资料都没有具体讲解过iBATIS使用不同返回类型的存储过程的用法!
    不知有没有大虾能指点指点!分一定给!!