tutorial query outside grails gorm

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) }