由模糊def递归导致的grails中的堆栈溢出

由模糊def递归导致的grails中的堆栈溢出,grails,groovy,gorm,Grails,Groovy,Gorm,这是一个相当奇怪的问题 我有两个类之间的多对多关系,订阅和场景。问题是,我试图删除它们之间的关系,当在每个类中使用“beforeDelete”删除其中一个时 ScenarioSubscription是表示连接表的类 这就是我的beforeDelete def在场景中的样子 def beforeDelete = { //Delete rows in junction table def example = new ScenarioSubscription(scenarioId:i

这是一个相当奇怪的问题

我有两个类之间的多对多关系,订阅和场景。问题是,我试图删除它们之间的关系,当在每个类中使用“beforeDelete”删除其中一个时

ScenarioSubscription是表示连接表的类

这就是我的beforeDelete def在场景中的样子

 def beforeDelete = {
    //Delete rows in junction table
    def example = new ScenarioSubscription(scenarioId:id)
    def scenSub = ScenarioSubscription.findAll(example)
    scenSub*.delete(flush:true)       
}
它在Subscription类中工作,但在场景中不工作。相反,在调用*.delete()时,将递归调用“beforeDelete”定义。我在调试时检查了该变量,ScenarioSub是ScenarioSubscription的列表。疯了


非常感谢您对当前情况的任何了解。

因此,听起来您的
ScenarioSubscription
域对象有两个属性,
Scenario
Subscription
。当您尝试删除链接域对象时,它尝试将删除级联到
场景
,该场景在删除前触发
关闭(并重复直到崩溃)

我认为您需要为
ScenarioSubscription
属性定义一个自定义映射,或者,您不能为这个
场景
域对象定义一个自定义映射,并在完全删除之前去掉您的

即:

可能也会有帮助

static mapping = {
  subscriptions cascade:"all-delete-orphan"
}