论坛首页 Java企业应用论坛

service调用的存储过程里显式commit,而导致事务不能rollback

浏览 12488 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-04-29  
kanbol 写道
jncz 写道
调用存储过程会单独使用一个local transaction。所以他会提交。同时又不在外部事务的控制之下,于是就无法回滚。

不是单独使用一个local transaction,因为第2步的sp commit造成第1步的操作也不能rollback了
这就说明sp与其它操作是在一个事务里。

目前看来似乎只能修改sp去掉显式commit了
这应该就是最简单的方法
0 请登录后投票
   发表时间:2007-04-29  
dovecat 写道
kanbol 写道
jncz 写道
调用存储过程会单独使用一个local transaction。所以他会提交。同时又不在外部事务的控制之下,于是就无法回滚。

不是单独使用一个local transaction,因为第2步的sp commit造成第1步的操作也不能rollback了
这就说明sp与其它操作是在一个事务里。

目前看来似乎只能修改sp去掉显式commit了
这应该就是最简单的方法
不一定简单。。。。

如果改完之后半分钟没有响应请找DBA解决。。。。
0 请登录后投票
   发表时间:2007-04-29  
抛出异常的爱 写道
不一定简单。。。。

如果改完之后半分钟没有响应请找DBA解决。。。。

为什么会出现这种情况?
0 请登录后投票
   发表时间:2007-04-29  
kanbol 写道
抛出异常的爱 写道
不一定简单。。。。

如果改完之后半分钟没有响应请找DBA解决。。。。

为什么会出现这种情况?
到现在不明白。。。。
DBA作了处理就OK了
0 请登录后投票
   发表时间:2007-04-29  
把你的第二步写成service的一个方法
在spring中设置事务传播为嵌套属性试试
0 请登录后投票
   发表时间:2007-04-29  
xly_971223 写道
把你的第二步写成service的一个方法
在spring中设置事务传播为嵌套属性试试

试过了不行
0 请登录后投票
   发表时间:2007-05-01  
改成存储过程调用存储过程,而不要在你的service代码中调用两个存储过程.
0 请登录后投票
   发表时间:2007-05-01  
jamesby 写道
改成存储过程调用存储过程,而不要在你的service代码中调用两个存储过程.

没有调两个存储过程啊
0 请登录后投票
   发表时间:2007-05-01  
总的来讲,既然用了spring的事务处理,就不应该绕过spring再去提交或回滚操作事务,spring是没法感知外面发生的情况的。
0 请登录后投票
   发表时间:2007-05-01  
我的意思是或者你全部使用存储过程实现业务逻辑,通过存储过程调用存储过程。也就是对于spring来说入口只有一个存储过程,或者完全不使用存储过程。

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics