Ich habe ein Elternobjekt, das nur erstellt werden kann, wenn Kinder gültig sind. . Kinder können nach der Speicherung nur auf die ID verweisen (da die ID automatisch erhöht wird). SO speichere ich die Eltern und dann die Eltern den Kindern zu speichern. Wie rolle ich alle übergeordneten und alle untergeordneten Sicherungen zurück, die aufgetreten sind, wenn ein Kind nicht gespeichert werden konnte?Grails: Möglichkeit, ein Elternteil und Kinder in die Datenbank NUR zu speichern, wenn alle Validierungen bestehen
(Dies geschieht in einer Service-Schicht)
parent.save(flush:true);
children.each{child->
child.parent=parent;
if(!child.save(flush:true)){
//how to roll back all previous child saves if any AND
//initial parent save also
}
}
Stellen Sie sicher, dass der obige Code in einer transaktionalen Methode in einem Service vorhanden ist, und eine nicht behandelte Ausnahme auslösen. Dies führt dazu, dass die Transaktion alle in der Methode durchgeführten Speichervorgänge rückgängig macht. –
Vielen Dank. Plain Exception oder RuntimeException oder spielt es eine Rolle? – user2782001
Egal, jede Ausnahme, die nicht gefangen wird, wird tun. –