(Quick Reference)
cascade
Purpose
Configures the cascading behavior of an association.
Examples
class Author {
static hasMany = [books:Book]
static mapping = {
books cascade:'all-delete-orphan'
}
}
Description
Usage:
association_name(cascade:string)
Arguments:
cascade
- The cascading behavior to define. Can be one or more (comma-separated) of all
, merge
, save-update
, delete
, lock
, refresh
, evict
, replicate
or all-delete-orphan
(one-to-many associations only).
By default GORM configures a cascading policy of "all" in the case where one entity "belongs to" another. For example:
class Book {
static belongsTo = [author:Author]
}
class Author {
static hasMany = [books:Book]
}
Here all persistence operations will cascade from the
Author
domain to the
Book
domain. So when a
Author
is deleted so will all his books.
If the association doesn't define an owner (a "belong to" relationship):
class Book {
}
class Author {
static hasMany = [books:Book]
}
Then GORM uses a cascading policy of "save-update" by default. So if an
Author
is deleted the
Book
domains associated with the
Author
won't be deleted. If you wish to customize this behavior you can use the
cascade
argument on an association:
class Author {
static hasMany = [books:Book]
static mapping = {
books cascade:'all-delete-orphan'
}
}
Here a
Book
will also be deleted if it is removed (orphaned) from the
books
association.
See the section on
transitive persistence in the Hibernate user guide.