2010-01-08 5 views
1

J'utilise Grails 1.2 et ont le nombre à plusieurs configuration de la relation suivante:removeFrom supprime tous mes nombreux à plusieurs associations

class Employee { 
    static belongsTo = Store 
    static hasMany = [stores:Store] 
} 

class Store { 
    static hasMany = [employees:Employee] 
} 

J'ensemencer des données dans Bootstrap.groovy:

store1.addToEmployees(employee1).save() 
store1.addToEmployees(employee2).save() 
store1.addToEmployees(employee3).save() 

Il en résulte que les données de DB suivant:

| store_employees | 
---------------------------------- 
| store_id  | employee_id | 
| 1   | 1    | 
| 1   | 2    | 
| 1   | 3    | 
---------------------------------- 

Ensuite, j'essaie de supprimer un seul employé de la magasin:

store.removeFromEmployees(employee1).save() 

Il en résulte tous employés s'enlevés. Ai-je mal configuré la relation ou quelque chose?

+0

Quel est l'état après la supprimer, mais avant que l'enregistrement? c'est-à-dire que cette dernière ligne est divisée en: store.removeFromEmployees (employee1); println store.employés; store.save(); println store.employés; EDIT: Ajout de points-virgules. J'ai oublié la mauvaise mise en forme dans les commentaires. –

Répondre

1

Hmm, je n'ai pas le même problème.

Quand je lance ce code à l'aide plugin console:

Store.list()*.delete() //clear so you can run script multiple times 
Employee.list()*.delete() //clear so you can run script multiple times 

store1 = new Store().save() 
employee1 = new Employee() 
employee2 = new Employee() 
employee3 = new Employee() 

store1.addToEmployees(employee1).save() 
store1.addToEmployees(employee2).save() 
store1.addToEmployees(employee3).save(flush:true) 


Store.list()[0].removeFromEmployees(Employee.list()[0]).save() 

L'état résultant de la DB (premier employé ajouté a été supprimé):

EMPLOYEE 
ID VERSION 
1 1 
2 0 
3 0 

STORE 
ID VERSION 
1 2 

STORE_EMPLOYEES 
EMPLOYEE_ID  STORE_ID 
2 1 
3 1 
+0

Je n'ai pas utilisé la console mais j'ai écrit le code dans Bootstrap et un test d'intégration. Impossible de reproduire le problème. Grails 1.2 –

Questions connexes