gpt4 book ai didi

mongodb - 更新失败后出现数据无法保存和stackoverflow错误?

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

我有一个很奇怪的问题,我在域中使用grails afterUpdate在数据库上保存 Activity 。

我用来在集合“DatabaseEvent”中创建记录的代码正在 Controller 中运行,并且可以完美地保存对象,但是同一代码不能在afterUpdate()方法中保存对象,

即使代码正在执行并且没有给出任何错误,但仍然没有保存对象

def afterUpdate () {
println "==++++==="
def dbEvent = new DatabaseEvent(type: "Created", entityClass : "Central Zone", objectId: this.id )
if(!dbEvent.save()){
println "======"
dbEvent.errors.each{
println it
}
}
else{
println "saved=="
}
}

它确实打印出“== ++++ ===”,然后进入其他并打印保存==
但是对象没有保存在数据库中,我使用mongodb

有时它会给出stackoverflow错误,并在一个调用中创建很多条目,我不明白,对此有任何解决方案?

我已经编辑了问题,我注意到的一个问题是,当我使用save(flush:true)并在一次调用中创建了很多记录时,它给了我stackoverflow,如果我不使用它,那就只是不创建任何???

最佳答案

服务层中的事务与关联的数据源耦合在一起,在这里您需要启动事务以保存数据

def afterUpdate () {
println "==++++==="
DatabaseEvent.withTransaction { status->
def dbEvent = new DatabaseEvent(type: "Created", entityClass : "Central Zone", objectId: this.id )
if(!dbEvent.save()){
println "======"
dbEvent.errors.each{
println it
}
}
else{
println "saved=="
}
}
}

关于mongodb - 更新失败后出现数据无法保存和stackoverflow错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33387594/

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