Verwandte Objekte einer m: n-Relation können mit einem HTML-Select-Element in meiner Anwendung ausgewählt werden (könnte auch eine Liste von Checkboxen sein). Wenn alle zugehörigen Objekte im Bearbeitungsformular deaktiviert sind, sollte die Objektliste der zugehörigen Objekte gelöscht werden. Mit Scaffold-Code funktioniert es nur, wenn mindestens ein verwandtes Objekt übrig bleibt.Grails: alle zugehörigen Objekte entfernen
Beispiel:
class Book {
String name
static hasMany = [authors: Author]
belongsTo = Author
}
class Author {
String name
static hasMany = [books: Book]
}
def b1 = new Book(name: "B1").save()
def b2 = new Book(name: "B2").save()
def author = new Author(name: "Stephen").addToBooks(b1).addToBooks(b2).save()
// How to remove all books from the author?
der Grails doc Nach würde ich für alle zugehörigen Objekte removeFrom*
(das Gegenteil von dem addTo*
) auf dem Domäne-Objekt aufrufen. Aber um das zu tun, musste ich herausfinden, welche Objekte verwandt sind. Gibt es eine einfachere Möglichkeit, die Liste verwandter Objekte zu löschen? Würde die bidirektionale Verknüpfung korrekt gehandhabt, wenn die Liste verwandter Objekte einfach durch eine leere Liste ersetzt würde?