一般事务都是配置在service层的,现在我有一个情况
比如:用户更改密码后要调用保存一个日志
public void changePassword(User user)throws Exception{
userDao.update(user);//更改密码
logService.saveLog(log);//保存日志
}
--------------------------------------------------------------
使用aop控制事务时,会在logService中的所有方法加上事务边界,同理,会在
userService中的指定方法也加上事务边界,那如果我在保存日志的过程中抛出
了异常,这时候 userDao.update(user);方法已执行并提交了。那这样说来,
service与service之间就无法事务同步了?
比如:用户更改密码后要调用保存一个日志
public void changePassword(User user)throws Exception{
userDao.update(user);//更改密码
logService.saveLog(log);//保存日志
}
--------------------------------------------------------------
使用aop控制事务时,会在logService中的所有方法加上事务边界,同理,会在
userService中的指定方法也加上事务边界,那如果我在保存日志的过程中抛出
了异常,这时候 userDao.update(user);方法已执行并提交了。那这样说来,
service与service之间就无法事务同步了?
解决方案 »
- jcifs 求助
- 就要疯了,快来帮忙啊 tomcat访问manager出现403错误
- OGNL取Set中的Set的值
- 向大侠请教,Flex项目测试,as unit 覆盖率问题(急!在线等!)
- 在webwork的action中获取到附件地址,怎么在页面打开和打印?
- Structs Hibernate中的小问题...
- jsp页面中动态导出word
- 请教javamail高手,复合邮件读取问题!!!!!!!1急
- 请教高手jbuilder支持工作流技术吗?如xlang ,wsfl ,bpws等。
- 使用javamail发送邮件
- 关于spring配置文件的问题。
- 困扰好久了,spring quartz一个问题,job无法得到spring注入的属性bean,请CSDN年XDJM看一下,帮忙看一下,给分不是问题,万分感谢
@Transactional(propagation=Propagation.REQUIRED) //如果有事务,那么加入事务,没有的话新建一个(不写的情况下)
@Transactional 的事务开启 ,或者是基于接口的 或者是基于类的代理被创建。所以在同一个类中一个方法调用另一个方法有事务的方法,事务是不会起作用的。
照楼主所说应该改成如下:
@Transactional(propagation=Propagation.REQUIRES_NEW) //不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务 对spring事务的隔离级别,楼主还需要多阅读文档,你的问题一定是这个原因导致的.
所以你的数据库的操作应该写在一个service方法里
以你的情况
可以在userService里注入logService,然后在一个service里调用logService的方法即可