ssh架构,spring声明式事物(oracle数据库),程序级异常可以回滚,正确的说这个根本不算回滚,只是一但抛出了异常,程序就不向数据库发送sql语句了(例如,程序中出现的空指针,以及hibernate异常等),而当提交到数据库,发生数据库级异常时候(例如:违反唯一约束,空约束等)就不会回滚了。   有谁碰到过类似问题,望告之不胜感激!

解决方案 »

  1.   

    设置回滚,你的连接需要autocommit=false。如果是spring管理事务,当有runtime异常,才回滚,如果你自己咩有定义异常的话。 所以,而异常后,后面的sql不会执行,所以感觉就像你这里的状况一样,这里是你们的事务管理没有正确,检查代码。
      

  2.   


    你说的autocommit=false,是在oracle数据库设置(oracle数据库现在是“不自动提交的”),还是在配置文件(app-config-context)设置???我配置的事物属性是PROPAGATION_REQUIRED,-java.lang.Exception,我定义的异常是Exception。
      

  3.   


    刚刚在配置文件 sessionFactory中配了<prop key="hibernate.connection.autocommit">false</prop>
    不过还是不能回滚