我有2个域名..主人和详细信息。
Master{
String masterName;
static hasMany=[details:Detail]
}
Detail
{
String detailName ;
static belongsTo =[master:Master];
}
我有处理保存的表单
def save = {
.....
def master = new Master(params);
params.detailsName.eachWithIndex(dtName, index ->
def detail = new Detail();
detail.detailName = dtName;
....
master.addToDetails(detail);
}
.....
master.save(flush:true);
}
当我调用master.save()时,如果有详细错误,主节点仍然保存数据。如果细节有错误我想知道如何取消master,我想知道如何跟踪错误的详细信息?
感谢
答案 0 :(得分:3)
交易就是您所需要的。您可以在服务中执行保存。在transaction = true的服务中,所有方法都包含在事务中,如果抛出任何异常,将会自动回滚:
class MasterService {
boolean transactional = true
def save(...) { }
}
或者,如果您不想创建服务,可以使用控制器中的withTransaction闭包将代码包装在事务中。