gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:37:25 25 4
gpt4 key购买 nike

这是一个非常奇怪的问题。

在订阅和方案这两个类之间,我有很多对很多的关系。问题是,当在每个这些类中使用“beforeDelete”删除其中一个时,我正在尝试删除它们之间的关系。

ScenarioSubscription是代表联结表的类。

这就是我的beforeDelete定义在方案中的样子。

 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。我在调试时检查了变量,并且scenSub是ScenarioSubscription的列表。疯?!

非常赞赏发生了什么。

最佳答案

因此,听起来您的ScenarioSubscription域对象具有两个属性ScenarioSubscription。当您尝试删除链接域对象时,它将尝试将删除级联到Scenario,从而触发beforeDelete关闭(并重复执行直到崩溃)

我认为您需要为自己的ScenarioSubscription属性定义一个custom cascade mapping,或者是否不能为该Scenario域对象定义一个自定义映射,并完全摆脱beforeDelete

即:

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

This question也可能有帮助

关于grails - 由于模糊的def递归导致的grails中的堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7712136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com