在我的控制器中,我有一个更新2个域类的操作。
我希望它以这样的方式制作:如果第二次更新失败,则第一次更新应该回滚,基本上如果出现错误,所有先前的操作都应该回滚。
这里的基本想法是什么?
答案 0 :(得分:9)
如果您不想将逻辑移至服务(可能是因为您可能正在调用多个服务来执行这两个更新),请使用controller action
为@Transactional
添加注释。
public MyController {
@Transactional
def save(){
myService.save(params)
myOtherService.save(params)
render "success"
}
...
}
答案 1 :(得分:7)
将您的所有业务逻辑移至已经是事务性的服务。使用一个服务进行第一次更新操作,使用另一个服
答案 2 :(得分:6)
结帐services,默认情况下它们是交易性的。只需在那里进行更新,如果有错误则抛出异常并在控制器中捕获它