removeFrom удаляет все мои ассоциации многие ко многим - PullRequest
1 голос
/ 08 января 2010

Я использую Grails 1.2 и имею следующую настройку отношения «многие ко многим»:

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

В результате получаются следующие данные БД:

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

Далее я пытаюсь удалить одного сотрудника из магазина:

store.removeFromEmployees(employee1).save()

В результате всех сотрудников будут удалены. Я установил отношения неправильно или что-то?

1 Ответ

1 голос
/ 09 января 2010

Хм, я не получаю ту же проблему.

Когда я запускаю этот код с помощью консольного плагина:

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

Полученное состояние БД (первый добавленный сотрудник был удален):

EMPLOYEE
ID  VERSION
1   1
2   0
3   0

STORE
ID  VERSION
1   2

STORE_EMPLOYEES
EMPLOYEE_ID     STORE_ID
2   1
3   1
...