1

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

これにより、次の DB データが生成されます。

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

次に、ストアから 1 人の従業員を削除しようとします。

store.removeFromEmployees(employee1).save()

これにより、すべての従業員が削除されます。私は関係を間違ってセットアップしましたか?

4

1 に答える 1

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
于 2010-01-09T03:47:28.087 に答える