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