2010-01-08 21 views
1

我使用的Grails 1.2,並具有以下衆多一對多的關係設置的:removeFrom被刪除所有我的許多-to-many關聯

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

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

我種子BootStrap.groovy中的一些數據:

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

這將導致以下DB數據:

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

接下來,我嘗試刪除從一個員工商店:

store.removeFromEmployees(employee1).save() 

這導致所有員工得到清除。我是否設置了錯誤的關係?

+0

刪除之後,但在保存之前是什麼狀態?即將最後一行中斷: store.removeFromEmployees(employee1); println store.employees; store.save(); println store.employees; 編輯:添加了分號。忘記了評論中糟糕的格式。 – 2010-01-09 15:47:57

回答

1

嗯,我沒有得到同樣的問題。

當我運行使用控制檯插件驗證碼:

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() 

(第一添加僱員被移除)DB的結果狀態:

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

我沒有使用控制檯,但在Bootstrap和集成測試中編寫了代碼。無法重現問題。 Grails 1.2 – 2010-01-09 04:13:28

相關問題