本帖最后由 jwhhq8062 于 2015-01-07 15:47:25 编辑

解决方案 »

  1.   

    可以配置的,特定条件下回滚  有一个rollback属性,配置一下就好了
      

  2.   

    是啊,你要抛出异常才行啊。你捕获了异常并且处理了,就没有异常了啊。e.printStackTrace(); 只是输出了异常信息
      

  3.   

    一般来讲,在spring和hibernate整合的时候,我们都会将事务写在service层,而不是dao层,这样就可以共用一个session。你的写法并没有声明rollback所以先保存的东西是不会回滚的。。
      

  4.   

    第二种你自己做了RuntimeException的异常处理,并没有抛出去,事务是没有感知到你的程序发生了异常的,所以不会回滚,直接提交,第一条记录就成功插入进去了。
      

  5.   

    是的,配置文件回滚必须要有异常才会回滚,默认的是runtime异常后回滚,单我们可已配置成所有异常都回滚,注意如果异常处理了以后,事务是不起作用的
      

  6.   

    在不自定义事务传播性和隔离性的默认情况下,事务回滚只发生在 抛出RuntimeException及其子类的情况下。lz对异常进行try后如果不手动抛出的话,spring事务是不做回滚处理的,即使不进行捕获的情况下,抛出的异常不是运行时异常事务也不会回滚,当然,你也可自己配置回滚事件。