【发布时间】:2014-02-24 23:36:27
【问题描述】:
我有两个方法都标注为@Transactional,并且都执行一些数据库操作,主要是插入。
我从methodA调用methodB
@Transactional
public void methodA(){
methodB();
// Some database Operations
// some error conditions....
throw exception;
}
@Transactional
public void methodB(){
// Some database Operations
}
所以我只想在所有操作都成功的情况下提交 MethodA 和 MethodB 的数据库事务。 因此,即使在 methodA 中遇到异常,在 methodB 中所做的更改仍然会被提交。
如果methodA遇到错误,我希望MethodB的更改回滚。
我需要做点别的吗?
【问题讨论】:
-
从您的帖子中并不清楚methodA() 和methodB() 的本质是什么,但我想有人会提到@Transactional 注释最适合a 中的类的方法服务层——你让我怀疑你的意思是这些是关于数据库操作的那些 cmets 的服务层方法。但是,当然,服务层会间接对数据库进行操作,所以也许这就是您的意图。