使控制器事务控制器

时间:2013-09-12 07:25:35

标签: grails

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

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

这里的基本想法是什么?

3 个答案:

答案 0 :(得分:9)

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

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

 ...

}

答案 1 :(得分:7)

将您的所有业务逻辑移至已经是事务性的服务。使用一个服务进行第一次更新操作,使用另一个服

答案 2 :(得分:6)

结帐services,默认情况下它们是交易性的。只需在那里进行更新,如果有错误则抛出异常并在控制器中捕获它