gpt4 book ai didi

grails - beforeDelete() 中的服务访问

转载 作者:行者123 更新时间:2023-12-05 01:09:39 24 4
gpt4 key购买 nike

我想在我的 grails 域对象中调用一个服务 beforeDelete() 事件。不幸的是,当事件被触发时,它总是可重现地崩溃。我构建了一个重现问题的示例。域对象:

class Gallery {

def myService

def beforeDelete() {
// System.out.println(myService); // not even this works, same error!
System.out.println(myService.say());
}
}

服务:
class MyService {

String say() {
"hello"
}
}

测试 Controller :
class DeleteController {

def index() {

Gallery.list().each {
it.delete()
}
}

def create() {
def gallery = new Gallery()
gallery.save()
}
}

如果我启动应用程序并调用 create 后跟 index 我得到:
Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [testbeforedelete.Gallery#1]

我要完成的是调用我的服务,比这个例子复杂一点。我无法解释这种行为,我不知道如何应对。我知道 Hibernate 事件需要特别小心,但我被卡住了。

最佳答案

beforeDelete 实际上对您的域类进行了更改。我同意您不会期望这种行为。 Hibernate 认为您正在修改实例。您可以使用以下代码来解决您的问题

def beforeDelete() {
Gallery.withNewSession {
System.out.println(myService.say());
}
}

关于grails - beforeDelete() 中的服务访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15572092/

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