2014-01-23 28 views
0

我是一個不穩定的我addTo *方法,我有一個記錄,不斷有必要在一個實例中的關係信息。問題是,當我在短時間內放置多個插入時,它們不再持久存儲在數據庫中,而是在它們返回之後,它們只是被放棄時間。Grails的行爲方法AddTo *

我的簡單課程是'發生'和'監測',每當我打電話時我必須註冊它,它發生在連續兩次記錄上,第三次不再存在於數據庫中,我失去了記錄。

Class Occurrence implements Serializable{ 
... 
hasMany = [accompaniments: Monitoring] 
... 
} 

Class Monitoring implements Serializable{ 
... 
belongsTo = [occurrence : Occurrence] 
... 
} 

有控制器看起來是這樣的:

def regMonitoring(Long id){ 

     def chamadoInstance = Occurrence.get(id) 

     if (!chamadoInstance) { 
      flash.message = message(code: 'default.not.found.message', args: [message(code: 'Occurrence .label', default: 'Occurrence '), id]) 
      return 
     } 

     chamadoInstance.status = StatusChamado.findByCodigo("MOV") 

     if (!chamadoInstance.save(flush: true)) { 
      render(view: "editMonitoring", model: [chamadoInstance: chamadoInstance]) 
      return 
     } 


     def mov = chamadoService.regMonitoring("") //returns an instance of Customer with preset output values ​​. 

     chamadoInstance.addToAccompaniments (mov) 

     redirect(action: "showChamado", id: chamadoInstance.id) 


    } 
+0

addToAccompaniments後添加chamadoInstance.save(flush:true)。 –

+0

解決了問題!謝謝!我意識到,在這個變化之前,它第一次被實例化並且在第三個實例沒有被持久化之後。我想知道爲什麼發生這種情況 – isilva

+0

很高興它解決了這個問題(作爲答案添加,所以你可以接受和upvote它)。 –

回答

0

添加在保存您的域實例添加到集合後。

chamadoInstance.addToAccompaniments (mov) 
chamadoInstance.save(flush: true) 

這應該解決這個問題。

+0

我意識到,在這個變化之前,它第一次被實例化並且在第三個實例沒有被持久化之後。我想知道爲什麼發生這種情況 – isilva

+0

沒有對GORM處理的方式進行一些嚴肅的調試,我不知道該如何處理我的頭頂。我懷疑它與Hibernate緩存實例的方式有關。 –