私はすべてのインスタンスを削除する必要があるドメインクラスウィジェットを持っています。その後、私は新鮮なデータを読み込みます。あなたはこれを行うための仕組みとして何を提案していますか?grailsテーブル/ドメインクラスのすべてのデータを削除します。つまり、 "deleteAll"
P.S.これはブートストラップ時ではなく、「実行時」であることに注意してください。
私はすべてのインスタンスを削除する必要があるドメインクラスウィジェットを持っています。その後、私は新鮮なデータを読み込みます。あなたはこれを行うための仕組みとして何を提案していますか?grailsテーブル/ドメインクラスのすべてのデータを削除します。つまり、 "deleteAll"
P.S.これはブートストラップ時ではなく、「実行時」であることに注意してください。
DomainClass.findAll().each { it.delete() }
をあなたは、このようなすぐにオブジェクトを削除する必要が、それは実際に削除されることを確認するためのチェックなど任意のGORMの落とし穴を回避したい場合いくつかの引数を追加してください。
DomainClass.findAll().each { it.delete(flush:true, failOnError:true) }
これは、コレクション全体をデータベースからメモリにロードし、それぞれを別々のデータベースクエリで個別に削除することに注意してください。データベースへのラウンドトリップの数のために、削除するオブジェクトが複数あるだけであれば、このパフォーマンスはひどくなります。 – GreenGiant
あなたがオブジェクトのリストを持っており、すべての要素を削除したい場合は、*
演算子を使用することができます。
'*' will split the list and pass its elements as separate arguments.
例。
List<Book> books = Book.findAllByTitle('grails')
books*.delete()
私が学んだことから、私は同意する@ataylor何の団体があなたのドメインオブジェクト(任意の実際のアプリケーションでは非常に低い)に存在しない場合、以下のコードは最速です:
DomainClass.executeUpdate('delete from DomainClass')
しかし、あなたの場合削除する最も安全な方法その後、他のドメインとのassiciationsを持っている(とも上記のものよりも少し遅くなる)次のようになります。
def domainObjects = DomainClass.findAll()
domainObjects.each {
it.delete(flush:it==domainObjects.last, failOnError:true)
}
これもhttp://stackoverflow.com/a/に答えているが10278312/329954 – JesperSM