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