2015-10-28 5 views
0

У меня очень странная проблема, я использую grails afterUpdate в домене для сохранения активности на db.данные не сохраняются после обновления grails и ошибки stackoverflow?

код им с помощью, чтобы создать запись в моей коллекции «DatabaseEvent» работает в контроллере и сохранение объекта отлично, но тот же код не сохраняет объект в 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==" 
    } 
} 

это распечатать «== ++++ ===» и уходит в другое и печати сохраняются == , но объект не является сохранен в db, im с использованием mongodb

и иногда он дает ошибку stackoverflow и создает много записей только в одном вызове, я не понимаю, какое-либо решение для этого?

Я отредактировал вопрос, как один я заметил, что он дает мне stackoverflow, когда я использую save (flush: true) и создал множество записей в одном вызове, и если я его не использую, просто не создавайте Любые ??

ответ

1

транзакций в служебный слой соединен с источником данных, связанных, здесь вам нужно инициировать транзакцию, чтобы сохранить данные, как это

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==" 
} 
} 
} 
Смежные вопросы