gpt4 book ai didi

grails - 获取所有 transient 对象

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

我们有一个 Controller ,我们试图在该 Controller 上进行域类的搜索。实际的搜索逻辑在服务中处理。该搜索涉及使用SomeDomain.withCriteria,设置为fetchModeSELECTcreateAlias。搜索可以正常返回所需的结果。获得结果后,我们将重定向到同一 Controller 中处理结果的另一个 Action 。从 Controller 返回刷新 session ,这是 Controller 引发以下异常的地方:

object references an unsaved transient instance - save the transient instance before flushing



好吧,它似乎以某种方式在我们的代码中的某个地方创建了一个域对象,但从未保存过。该错误消息足以显示 transient 对象的类型,但不会通知创建对象的时间和地点。创建该对象的位置仍然是个谜,我现在正在寻找方法来获取对该对象的引用。所以我的问题是,如何找到处于 transient 的所有对象?

我想要引用这个未保存的神秘对象,只是因为我想在其上调用 discard,然后看事情如何继续。我知道我不需要这个对象,所以如果它卡在某个地方,我想将其丢弃,这样它就不会引发异常。如果有人还能弄清楚创建该对象的原因和位置,那将是很好的。

最佳答案

我们也遇到了这个问题,这可能是一个令人讨厌的错误。大概可以通过浏览Hibernate的内部结构来找到所有 transient ,但是我从来没有做过很多。取而代之的是,我们通常通过flush()和二进制搜索进行调试:越来越主动地刷新 session ,直到很明显哪个操作对您的对象图引入了 transient 。

关于grails - 获取所有 transient 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26532549/

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