4

在我的控制器中,我有一个更新 2 个域类的操作。

我希望它以这样一种方式进行,即如果第二次更新失败,第一次更新应该回滚,基本上如果出现错误,所有先前的操作都应该回滚。

这里的基本思想是什么?

4

3 回答 3

10

如果您不想将逻辑移动到服务(可能是因为您可能正在调用多个服务来执行这两个更新),请controller action使用@Transactional.

public MyController {
 @Transactional
 def save(){
   myService.save(params)
   myOtherService.save(params)
   render "success"
 }

 ...

}
于 2014-02-24T20:22:03.300 回答
7

只需将所有业务逻辑移至已经是事务性的服务。将一个服务用于第一个更新操作,第二个用于另一个操作。

于 2013-09-12T07:41:09.317 回答
6

查看服务,默认情况下它们是事务性的。只需在那里进行更新,如果有错误抛出异常并在控制器中捕获它

于 2013-09-12T07:39:55.180 回答