Como pegar erro no addToTag () [grails]
Pergunta
Eu tenho 2 domínios .. mestre e detalhes.
Master{
String masterName;
static hasMany=[details:Detail]
}
Detail
{
String detailName ;
static belongsTo =[master:Master];
}
Eu tenho forma que pega o save
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);
}
quando liguei master.save (), se houver erros em detalhes, o mestre ainda guardar os dados. Eu quero saber como cancelar mestre se houver erros em detalhes e eu gostaria de saber como rastrear os erros em detalhes?
graças
Solução
Uma transação é o que você precisa. Você poderia executar a salvo em um serviço. Em serviços com transação = true, todos os métodos são envolvidos em transações e haverá um rollback automático se houver exceção é lançada:
class MasterService {
boolean transactional = true
def save(...) { }
}
Ou você poderia usar o withTransaction fechamento em seu controlador para embrulhar o seu código em uma transação se você não quiser criar um serviço.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow