事务配置部分
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" read-only="false" propagation="REQUIRED"
isolation="SERIALIZABLE" />
<tx:method name="delete*" read-only="false" propagation="REQUIRED"
isolation="SERIALIZABLE" />
<tx:method name="update*" read-only="false" propagation="REQUIRED" rollback-for="net.omw.flow.runException.***Exception"
isolation="SERIALIZABLE" />
<tx:method name="exchange*" read-only="false" propagation="REQUIRED"
isolation="SERIALIZABLE" />
<tx:method name="*" read-only="true" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>
<!--
配置那些类的方法进行事务管理,当前net.omw.flow.bo.impl包中的子包, 类中所有方法需要,还需要参考tx:advice的设置
-->
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* net.omw.flow.bo.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
</aop:config>
测试的方法 public void updateTestSubsys(FrameSubsys frameSubsys)
throws DataRuntimeException {
frameSubsysDAO.update(frameSubsys);
// Integer.valueOf("dddd");//人为造成错误,让事务回滚
throw new DataRuntimeException(); }
我这里强行throw new DataRuntimeException();
异常,为的是异常回滚,但是,我发现,数据还是被修改了,异常没有回滚哦,请求帮忙

解决方案 »

  1.   

    <tx:method name="update*" read-only="false" propagation="REQUIRED" rollback-for="net.omw.flow.runException.***Exception"
    这里面直接改成<tx:method name="update*" read-only="false" propagation="REQUIRED" rollback-for="net.omw.flow.runException.DataRuntimeException"试试
      

  2.   

    默认情况下,当抛出是运行期(RunTime)异常的时候才会回滚。
    你的帖子貌似发错地方了。应该是在JAVAEE区发啊