解决方案 »

  1.   

    检查一下存储过程里面是不是做一些操作会带隐性commit的DDL  会造成 commit
    DML 需要commit命令或者设置隐性提交。
      

  2.   

    比如 create , drop 或者truncate 这些会造成数据的提交。
    而insert into  , select这些则不会。
    看看你的存储过程里面是不是使用了DDL来做了一些操作。
      

  3.   

    没有这些情况,这是我特意写的一个测试用的过程,里面只放了一句错误的update语句,而且我刚刚发现如果在调用之前报错也不会回滚,比如我少传了一个参数给过程,实际上都还没成功调用呢
      

  4.   

    问题应该是以下这种调用方法出的问题,不过这个是hibernate4API提供的获取Connection方法啊
    sessionFactory.getCurrentSession().doWork(new Work() {
        @Override
        public void execute(Connection con) throws SQLException {
            
        }
    }
      

  5.   

    没有这些情况,这是我特意写的一个测试用的过程,里面只放了一句错误的update语句,而且我刚刚发现如果在调用之前报错也不会回滚,比如我少传了一个参数给过程,实际上都还没成功调用呢。问题应该是以下这种调用方法出的问题,不过这个是hibernate4API提供的获取Connection方法啊
    sessionFactory.getCurrentSession().doWork(new Work() {
        @Override
        public void execute(Connection con) throws SQLException {
            
        }
    }
      

  6.   

    update和存储过程用的是不是同一个connection???
      

  7.   

    sessionFactory.getCurrentSession()我使用的是这个很明显是