事务配置部分
<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();
异常,为的是异常回滚,但是,我发现,数据还是被修改了,异常没有回滚哦,请求帮忙
<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();
异常,为的是异常回滚,但是,我发现,数据还是被修改了,异常没有回滚哦,请求帮忙
这里面直接改成<tx:method name="update*" read-only="false" propagation="REQUIRED" rollback-for="net.omw.flow.runException.DataRuntimeException"试试
你的帖子貌似发错地方了。应该是在JAVAEE区发啊