Wie kann ich löschen und ersetzen Sie eine Sammlung in einer eins-zu-viele-Beziehung in Grails/Groovy

Diese Frage ist in zwei Teile, der erste Teil ist über das clearing Liste und der zweite Teil ist über die Zuordnung von Besitzer zu einem Objekt.

Habe ich eine eins-zu-viele-Beziehung zwischen zwei domain-Objekte in meinem Modell in Grails. Die Beziehung sieht wie folgt aus...

class Person {

    static hasMany = [authorities: Role, locations: Location]
}

class Location {

    static belongsTo = Person

}

In meiner app die locations Liste auf Person wird vollständig aktualisiert und ersetzt mit einer neuen Liste auf eine Aktion des Benutzers. Was mehr ist, bekomme ich die Liste der Location Objekte, unabhängig von der damit verbundenen Person. Ich löse die person, um Sie anzuwenden, um mit dem abrufen der aktuell angemeldete Benutzer, die ich als activePerson und ist gut für meine Zwecke.

Was ich will zu tun ist, löschen Sie alle bestehenden Standorte auf activePerson und legen Sie alle die neuen, assoziierten Sie mit der activePerson wie ich gehen. Ich habe eine Reihe von Eigenschaften auf Person was ich nicht wollen, bleiben bei diesem Punkt, so will ich vermeiden, speichern Sie die gesamte übergeordnete Objekt, nur weil Standorte Kinder sich verändert haben.

Dachte ich Durchlaufen durch die activePerson.locations Liste und löschen Sie eins nach dem anderen und verlassen sich auf GORM/Hibernate batch-Abfragen zusammen und Spülen am Ende. Dies scheint, wie brute-force, obwohl es funktionieren könnte. Ich hatte erwartet, dort zu sein clearLocations Methode oder etwas ähnliches, aber ich kann Sie nicht finden.

Mache ich, wenn ich ersetzen Sie einfach die activePerson.locations mit einer neuen Liste und rufen activePerson.save(flush:true) wird GORM Griff das löschen der vorhandenen Zeilen?

Zweitens möchte ich auf die neuen Location Objekte auf activePerson. Wieder konnte ich Auffüllen der activePerson.locations und speichern Sie die ganze Sache, aber ich möchte vermeiden, dass, wenn ich kann. Ich kann speichern Sie einzeln, aber wie setze ich belongsTo auf jeden Location Objekt, wie ich gehen?

So zur Erinnerung:

  1. Wie lösche ich eine Liste auf der viele Ende einer eins-zu-viele-Sammlung?
  2. Wie assoziiere ich eigenständige Objekte mit einem übergeordneten Objekt, und speichern Sie Sie einzeln?

Dank

InformationsquelleAutor der Frage Simon | 2010-01-15

Schreibe einen Kommentar