3

J'ai quelques problèmes avec la partie GORM de Grails. J'utilise Grails 1.3.4, avec H2.Comment remplacer la suppression en cascade pour une relation dans Grails GORM?

Dans la base de données j'ai deux tables modèle et rapport. Au niveau GORM, j'ai les deux classes de domaine Template et Report;

class Template { 

static hasMany = [reports: Report] 

... 
} 

et

class Report { 

static belongsTo = [template: Template] 

... 
} 

Le comportement par défaut semble être que lorsqu'un Template est supprimé, la suppression sera répercutée de manière à ce que tous Report s qu'il a sera supprimé aussi. Au niveau de la base de données que j'ai essayé de faire le template_id -column dans le rapport -table un ON DELETE SET NULL clé étrangère, mais cela ne fonctionne pas.

Existe-t-il un moyen de remplacer la suppression en cascade?

Répondre

6

Ce qui suit doit être ajouté dans la classe Template:

static mapping = { 
    reports cascade: 'none' 
} 

pour pouvoir supprimer Template s sans problèmes, cet ajout à la classe Report est également nécessaire:

static constraints = { 
    template(nullable: true) 
}