query - grails documentation
Grails elimina todos los datos de la clase de tabla/dominio, es decir, "deleteAll" (4)
Tengo una clase de dominio, Widget, de la que necesito eliminar todas las instancias: despejarla. Después de eso, cargaré nuevos datos. ¿Qué sugieres como mecanismo para hacer esto?
Nota: esto no es en el tiempo de arranque, sino en "tiempo de ejecución".
La forma más fácil es usar HQL directamente:
DomainClass.executeUpdate(''delete from DomainClass'')
DomainClass.findAll().each { it.delete() }
Si desea evitar cualquier problema GORM, como la necesidad de eliminar el objeto inmediatamente y verificar que realmente se elimine, agregue algunos argumentos.
DomainClass.findAll().each { it.delete(flush:true, failOnError:true) }
Si tiene una lista de objetos y desea eliminar todos los elementos, puede usar *
operador.
''*'' will split the list and pass its elements as separate arguments.
Ejemplo.
List<Book> books = Book.findAllByTitle(''grails'')
books*.delete()
De lo que aprendí, estoy de acuerdo con @ataylor el siguiente código es el más rápido SI no hay asociaciones en su objeto de dominio (Muy poco probable en cualquier aplicación real):
DomainClass.executeUpdate(''delete from DomainClass'')
Pero si tiene assiciations con otros dominios, entonces la forma más segura de eliminar (y también un poco más lenta que la mencionada anteriormente) sería la siguiente:
def domainObjects = DomainClass.findAll()
domainObjects.each {
it.delete(flush:it==domainObjects.last, failOnError:true)
}