Hibernate Grails GORM多对多关系和删除jointable条目

Hibernate Grails GORM多对多关系和删除jointable条目,hibernate,grails,gorm,Hibernate,Grails,Gorm,我有汽车和车库两个班。他们有m:n关系,所以一辆车有很多车库,一个车库有很多车 我的数据库中有一个garage\u has\u car表,其中存储了关系。 我已经在车库的车上设置了belongsTo static belongsTo = [ Garage ] 如果清除车库上的“汽车”集合并保存,则车库中的相应条目将被删除 但是,如果我清除汽车上的车库集合并保存,则车库\u has\u car表中的相应条目不会被删除 我如何实现这种行为 更新1(添加关系定义): 在车库中,这种关系是: car

我有汽车和车库两个班。他们有m:n关系,所以一辆车有很多车库,一个车库有很多车

我的数据库中有一个garage\u has\u car表,其中存储了关系。 我已经在车库的车上设置了belongsTo

static belongsTo = [  Garage ]
如果清除车库上的“汽车”集合并保存,则车库中的相应条目将被删除

但是,如果我清除汽车上的车库集合并保存,则车库\u has\u car表中的相应条目不会被删除

我如何实现这种行为

更新1(添加关系定义):

在车库中,这种关系是:

cars column:'deskriptor_id',joinTable:'garage_has_cars'
在汽车里是这样的

static belongsTo = [  Garage ]
garages column:'car_id',joinTable:'garage_has_cars'
我在IRC也问过这个问题,有人回答:

(…)grails多对多关系始终只是一个方向的级联。此外,grails中的多对多关系在hibernate中的映射效率非常低。不要使用它们。创建一个joinclass域对象CarGarage,其中包含一辆汽车和一个车库。使类的cars和garage属性变为瞬态,并向car和garage类添加get和add方法,这些类使用joinclass来维护关系。您还希望在联接类中禁用版本控制 以下是本演示文稿中的一些信息,其注释如下:


我发布这篇引文是因为它可能会帮助和我有同样问题的人。一旦我有时间实施这些更改,我也会更新这个问题。

只是回答从未答复列表中删除

(…)grails多对多关系始终只是级联一个 方向。grails中的多对多关系也非常糟糕 在hibernate中映射它们的方式效率低下。不要使用它们。 创建一个joinclass域对象CarGarage,其中包含一辆汽车和一个车库。 使汽车和车库成为你的类的属性,并添加 获取并将方法添加到使用 用于维护关系的joinclass。您还想禁用 join类中的版本控制可以在下面的 演示 它的注释如下:Grails:Many-to-Many-without hasMany/belongsTo-改为使用本机3NF-搜索全文


你能在这里发布你的多对多关系(唯一的关系)吗?是的,正如你发现的,你想要一个关联对象来管理多对多关系。不过,这不仅仅是为了解决效率低下的问题,我发现,不管怎样,我最终还是需要更多的信息(例如:你将汽车添加到车库的日期)。不过,你可能想选择一个对你的应用程序有意义的名称,而不是一个“类似表格”的名称。也许是“车库槽”。使用“车库”可能会让人困惑。