2013-05-14 2 views

Répondre

1

Je vous suggère de regarder dans le GORM documentation. Vous avez quelques façons de déclarer votre relation entre les classes, et en fonction de celles-ci, la suppression sera en cascade ou non. Ce comportement est expliqué dans "6.3.3 Understanding Cascading Updates and Deletes".

Que ce soit un à un, un à plusieurs ou plusieurs à plusieurs, la définition belongsTo se traduira par des mises à jour en cascade de la classe possédante à sa charge (de l'autre côté de la relation), et pour des suppressions de relations many/one-to-one et one-to-many en cascade.

Donc, vous devriez envisager de déclarer hasMany et belongsTo, pour permettre aux suppressions en cascade.

1
class User { 
    // Group details should not be referenced here 
} 
class Group { 
    String Name 
    String Description 
    GroupDetails gd 
} 

class GroupDetails { 
    User user 
    static belongsTo = [group:Group] 
} 

Dans ce cas, si Group aura un enfant GroupDetails puis lorsque vous supprimez Group, entité enfant (s) seront également supprimés.

Jetez un oeil à premier exemple dans Grails docs: http://grails.org/doc/2.2.x/ref/Domain%20Classes/belongsTo.html

également Sérgio Michels il y a d'autres façons de le faire fonctionner.

exemple: https://github.com/aprudnikovas/testGrailsOneToOneCascade

+0

j'ajouter la relation dans mon domaine: GroupDetails classe { utilisateur utilisateur statique belongTo = [Groupe:] } mais quand je tente de supprimer, il se eror comme ceci: Row a été mis à jour ou supprimé par une autre transaction (ou mappage valeur non enregistrée était incorrecte): – dope

+0

Désolé petite erreur: il suffit fixe belongTo -> belongsTo –

+0

Testé en git: https://github.com/aprudnikovas/testGrailsOneToOneCascade –

Questions connexes