sincronización de objetos con base de datos
Los desarrolladores de aplicaciones hibernate deberían siempre pensar acerca del estado de sus objetos, y no necesariamente acerca de la ejecución de sentencias SQL.
Específicamente en grails se puede cometer el error de borrar una colección de la base de datos en vez de los objetos de la colección, esto provoca confusiones porque cuando se vacíe la sesión (flush), intentará recrear nuevamente los objetos que se encuentran en la colección, (lanzará una excepción):
def a = Author.get(1)
a.books*.delete()
El siguiente código si es correcto:
def a = Author.get(1)
a.books.clear()