Omar Faruq
Omar Faruq

Reputation: 1220

Grails 2.1 How can I Prevent Cascade delete

What techniques are people using to efficiently do prevent cascading delete on a large collection of classes?

I have the following domain classes: But when I delete a category item then it also delete all genericProduct item which are relation to category. Now How can i prevent this

class Category {

String name
static hasMany      =  [manufacturers: Manufacturer, genericProducts:GenericProduct]
static mappedBy     =  [genericProducts:'categories']
AuditUser audit     =  new AuditUser()
static embedded     =  ['audit']    
static constraints  =  {
    name  blank: false, size: 0..60, unique: false
}
static mapping = {
    table 't01i001'
    id      column: 'f_category_id'
    name    column: 'f_name',       length: 60     
    version column: 'f_revision'

    manufacturers joinTable: [name: 't01j001', key: 'k_category_id', column: 'k_manufacturer_id']
}

and

class GenericProduct {

String name

static belongsTo  =  [categories:Category]
static hasMany    =  [brands:Brand]
static mappedBy   =  [brands:'genericProducts']

AuditUser audit = new AuditUser()
static embedded = ['audit']  

static constraints = {
    name     blank: false, size: 0..60, unique: false
}

static mapping = {
    table 't01i003'
    id          column: 'f_generic_product_id'
    name        column: 'f_name', length: 30  
    categories  column: 'f_cat_id', length: 30  
    version     column: 'f_revision'
}

Upvotes: 1

Views: 335

Answers (1)

Omar Faruq
Omar Faruq

Reputation: 1220

Next time i add some configeration for prevent cascade delete then it works

class Category {

    String name
    static hasMany      =  [manufacturers: Manufacturer, genericProducts:GenericProduct]
    static mappedBy     =  [genericProducts:'categories']
    AuditUser audit     =  new AuditUser()
    static embedded     =  ['audit']    
    static constraints  =  {
        name  blank: false, size: 0..60, unique: false
    }
    static mapping = {
        manufacturers   cascade: 'save-update'
        genericProducts cascade: 'save-update'

        table 't01i001'
        id      column: 'f_category_id'
        name    column: 'f_name',       length: 60     
        version column: 'f_revision'

        manufacturers joinTable: [name: 't01j001', key: 'k_category_id', column: 'k_manufacturer_id']
    }

Upvotes: 2

Related Questions