由模糊def递归导致的grails中的堆栈溢出
这是一个相当奇怪的问题 我有两个类之间的多对多关系,订阅和场景。问题是,我试图删除它们之间的关系,当在每个类中使用“beforeDelete”删除其中一个时 ScenarioSubscription是表示连接表的类 这就是我的beforeDelete def在场景中的样子由模糊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
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"
}