【发布时间】:2015-03-11 11:29:30
【问题描述】:
我遇到了一个问题,我的交易没有提交
我的服务类是@Transactional 注释
@Transactional
class MyService{
public void find();
public void return(); //Return will only happen if find is updated in DB
public void cancel(){
find();
return();
}
}
我的班级有 3 个 api,它们在内部调用各自的 Dao,而 Dao 没有注释为 Transactional。
现在如果我调用cancel,我会先调用find,然后调用return()。但是 return() 需要 find() 需要用 FIND 状态更新数据库。
但是由于所有都发生在同一个事务上,直到返回取消,事务才被提交。有人可以帮助我了解这种情况并解决它。
我不知道在这种情况下如何使用传播。
提前谢谢..
【问题讨论】:
-
它们使用相同的事务,这意味着事务中所做的更改对于从事务中调用的所有选择都是可见的
-
在同一个事务本身中,即使 find() 更新了数据库,当我从 return() 检查时,我无法看到数据库已更新。
标签: java spring jpa transactional