langhua9527 2009-06-23 15:50 采纳率: 0%
浏览 319
已采纳

spring的事务不一致

一个SSH2的项目里面

假设一个Action如

TestAtion

他里面有两个Manager


[code="java"]
public class TestAction extends ActionSupport implements xxxxx{

private AaaaManager  aManager;
private BbbbManager  bManager;

[/code]

然后TestAction的一个方法里面

[code="java"]
public String save() {
aManager.saveaaa();//保存
。。。。。。。。。。
bbbbManager.savebbb() //假设这个是保存文件,如果这里出错了,这个就保存不了了,但是saveaaa却保存了了,这样事务就不一至了,请问大家这个怎么办啊。

}
[/code]

Spring的事务配置
[code="xml"]

<aop:config proxy-target-class="true">
   <aop:advisor pointcut="execution(* com.xxxx.xxxxxManager.*Manager.aaa.*Manager.*(..))" advice-ref="txAdvice"/>
</aop:config>
     <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="get*" read-only="true"/>
        <tx:method name="find*" read-only="true"/>
        <tx:method name="paged*" read-only="true"/>
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice>

[/code]

还有read-only="true"表示前面那个配的方法没有事务么
[b]问题补充:[/b]
我说是我保存两个对象的时候事务不一致

aManager.saveaaa();这个保存成功了

接下来再保存一个对象

bbbbManager.savebbb() 这个没有保存成功,出了异常,而roolback了,

但是前面的saveaaa()却保存成功了。。
[b]问题补充:[/b]
如果对这三个方法都设了事务呢?
最后怎么rollback啊
[b]问题补充:[/b]
我savebbb()保存不成功是因为程序的问题,因为SPRING里面事务在Manager里面,所以每个SAVE都是一个事务,所以事务不一致

  • 写回答

4条回答 默认 最新

  • wanghaolovezlq 2009-06-23 16:56
    关注

    看你定义的切面

    你是对Manager后缀的service进行管理事务。

    aManager.saveaaa();//这个是一个单独的事务

    。。。。。。。。。。

    bbbbManager.savebbb()//这个又是一个单独的事务

    所以,这两个事务是不相关的,
    自然出现了你这种情况

    你应该是对
    public String save() {
    aManager.saveaaa();//保存
    。。。。。。。。。。
    bbbbManager.savebbb() //假设这个是保存文件,如果这里出错了,这个就保存不了了,但是saveaaa却保存了了,这样事务就不一至了,请问大家这个怎么办啊。

    }这个方法进行事务管理,那就没问题了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Ios抖音直播的时候如何添加自定义图片在直播间!
  • ¥15 ssh登录页面的问题
  • ¥60 渗透一个指定银行app,拿到客户信息,需要什么级别
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥15 stm32 串口通讯过程中的问题
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名