iberck
10/19/2017 - 4:51 PM

Delete

Snippets para eliminar elementos

Delete

Con hql:

@Override
public void deleteActivities(EUser user) {
    Session sess = sFactory.getCurrentSession();
    Query query = sess.createQuery("delete EActivity where u_id_usr=:id");
    query.setParameter("id", new Long(user.getIdUsr()));
    int result = query.executeUpdate(); 
    // result tiene el número de registros eliminados/actualizados.
}

On delete cascade

No hay menera de indicar a través de grails/gorm la instrucción on delete cascade de la base de datos. Una alternativa manual a nivel bd es lanzar un trigger cuando sean eliminadas filas de una tabla para proceder con ciertas operaciones.

Delete Orphan

Sirve para que al eliminar un elemento de una colección , también se borre por automático de la base de datos.

Algunos métodos de las colecciones por ejemplo clear() borra internamente elemento por elemento por lo que se necesita delete-orphan para que funcione el método a nivel de base de datos.

class Author {
    static hasMany = [ books: Book ]
 
    static mapping = {
        books cascade: "all-delete-orphan"
    }
}
class Book {
    String title
}