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

标签 mongodb grails

我有一个很奇怪的问题,我在域中使用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/

相关文章:

node.js - Mongodb:从所有集合中删除所有文档

mongodb - 对不同集合的两个查询 - MongoDB

node.js - Mongoose报告写入成功,数据库中没有任何内容

javascript - 在 {{each}} 循环中使用条件

Mongodb:如何查询嵌套文档和顶级文档

grails - 如何使用Spring Security插件在Grails中自定义rolePrefix?

json - grails JSON 绑定(bind)到 LinkedHashSet 而不是 JSONArray 以实现深度嵌套关系

email - Grails findAllByRole()错误

grails - 自定义字段插件Grails

security - Grails安全插件:Requestmap与数据库不一致