grails-löschen Sie alle Daten aus der Tabelle / domain-Klasse, d.h. "deleteAll"
Ich habe eine domain-Klasse, ein Widget, das ich brauche, um zu löschen Sie alle Instanzen aus-klar es heraus. Danach habe ich die geladen werden, die in den frischen Daten. Was empfehlen Sie als einen Mechanismus, um dies zu tun?
P. S. Hinweis: dies ist nicht bei den bootstrap-Zeit, sondern in "run-time".
Dies ist auch beantwortet, stackoverflow.com/a/10278312/329954
InformationsquelleAutor Ray | 2011-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg ist die Benutzung von HQI-direkt:
Dies funktioniert in den neuesten Versionen von Grails. In 2.4.4 noch nicht.
Was ist, wenn die domain-Klasse besitzt Verbände? In der Regel, wir wollen löschen Sie alle von Ihnen, nicht nur diese DomainClass
HQL-Abfragen funktionieren nicht mit MongoDB.
InformationsquelleAutor ataylor
Wenn Sie vermeiden möchten, GORM Fallstricke, wie löschen müssen Sie das Objekt sofort und überprüfen, um sicherzustellen, dass es wirklich gelöscht wird, fügen Sie einige Argumente.
InformationsquelleAutor Jim Chertkov
Von dem, was ich gelernt habe, Stimme ich mit @ataylorint den code unten geht am schnellsten, WENN es keine Verbände, die in Ihrer domain-Objekt (Höchst unwahrscheinlich, dass in einer realen Anwendung):
Aber wenn Sie assiciations mit anderen Bereichen, dann ist der sicherste Weg, um zu löschen (und auch ein wenig langsamer als die oben genannten) wäre die folgende:
InformationsquelleAutor Saurabh J
Ziemlich Alter Beitrag, aber immer noch aktuell.
Wenn deine Tabelle sehr groß ist (mehrere Millionen Einträge), die Iteration mit findall()*.delete() ist vielleicht nicht die beste option, die Sie ausführen können in Transaktions-timeouts (z.B. MySQL innodb_lock_wait_timeout Einstellung) neben möglicher Speicher Probleme festgestellt, die von GreenGiant.
Also zumindest für MySQL Innodb, viel schneller ist die Verwendung von TRUNCATE TABLE:
Dies ist nur sinnvoll, wenn Sie Ihre Tabelle ist nicht von anderen Objekten referenziert als Fremdschlüssel.
InformationsquelleAutor Bertl
Wenn Sie haben eine Liste von Objekten und löschen möchten, alle Elemente, die Sie verwenden können
*
Betreiber.Beispiel.
InformationsquelleAutor bak