Grails removeFrom正在删除我的所有多对多关联
我使用的是Grails1.2,并设置了以下多对多关系:Grails removeFrom正在删除我的所有多对多关联,grails,gorm,Grails,Gorm,我使用的是Grails1.2,并设置了以下多对多关系: class Employee { static belongsTo = Store static hasMany = [stores:Store] } class Store { static hasMany = [employees:Employee] } 我在Bootstrap.groovy中植入了一些数据: store1.addToEmployees(employee1).save() store1.add
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()
这将导致所有员工被解雇。我把关系安排错了还是怎么了 嗯,我没有遇到同样的问题 当我使用控制台插件运行此代码时:
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的结果状态(第一个添加的员工被删除):
嗯,我没有遇到同样的问题 当我使用控制台插件运行此代码时:
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的结果状态(第一个添加的员工被删除):
我没有使用控制台,但在引导和集成测试中编写了代码。无法重现该问题。Grails1.2I没有使用控制台,而是在引导和集成测试中编写了代码。无法重现该问题。Grails 1.2删除后保存前的状态是什么?i、 e.将最后一行改为:store.removeFromEmployees(employee1);println store.employees;store.save();println store.employees;编辑:添加分号。忘记了注释中的格式错误。删除后保存前的状态是什么?i、 e.将最后一行改为:store.removeFromEmployees(employee1);println store.employees;store.save();println store.employees;编辑:添加分号。忘记了注释中糟糕的格式设置。