这是一个非常奇怪的问题。
我在两个类之间有多对多的关系,Subscription&场景。当我们在每个类中使用“beforeDelete”删除它们时,我正试图删除它们之间的关系。
ScenarioSubscription是表示联结表的类。
这就是我的beforeDelete def在Scenario中的样子。
def beforeDelete = {
//Delete rows in junction table
def example = new ScenarioSubscription(scenarioId:id)
def scenSub = ScenarioSubscription.findAll(example)
scenSub*.delete(flush:true)
}
它适用于Subscription类,但不适用于Scenario。相反,当调用* .delete()时,递归调用“beforeDelete”def。我在调试时检查了变量,sceSub是ScenarioSubscription的列表。疯了?!
非常感谢任何有关正在发生的事情的想法。
答案 0 :(得分:2)
因此,听起来您的ScenarioSubscription
域对象有两个属性,Scenario
和Subscription
。当您尝试删除链接域对象时,它会尝试将删除级联到Scenario
,这会触发beforeDelete
关闭(并重复直到崩溃)
我认为您需要为ScenarioSubscription
属性定义custom cascade mapping,或者,您无法为此Scenario
域对象定义自定义映射,并删除你的beforeDelete
完全?
即:
static mapping = {
subscriptions cascade:"all-delete-orphan"
}
This question也可能有所帮助