2 Stimmen

Wie man Fehler in addToTag() abfangen [grails]

Ich habe 2 Domains Master und Details.

Master{
 String masterName; 
 static hasMany=[details:Detail]
}

Detail
{
  String detailName ; 
  static belongsTo =[master:Master];
}

Ich habe ein Formular, das die Speicherung behandelt

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);
}

Wenn ich master.save() aufrufe, werden bei Fehlern im Detail die Daten trotzdem gespeichert. Ich möchte wissen, wie man den Master abbricht, wenn es Fehler in den Details gibt, und ich möchte wissen, wie man die Fehler in den Details verfolgt?

danke

3voto

John Wagenleitner Punkte 10749

Eine Transaktion ist das, was Sie brauchen. Sie könnten das Speichern in einem Dienst durchführen. In Diensten mit transaction=true sind alle Methoden in Transaktionen verpackt und es erfolgt ein automatischer Rollback, wenn eine Ausnahme ausgelöst wird:

class MasterService {

    boolean transactional = true

    def save(...) { }
}

Oder Sie könnten die mitTransaktion Schließung in Ihrem Controller, um Ihren Code in eine Transaktion zu verpacken, wenn Sie keinen Dienst erstellen möchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X