Snippets para eliminar elementos
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.
}
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.
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
}