2017-07-24 41 views
-2

當我在grails中寫入.save()時,它會在db表中插入一個新行。但是,不要在對象中保存數據。 我用.save(flush:true)嘗試過,但沒有運氣。 請幫忙。Grails .save()不起作用

感謝

+0

什麼的Grails的版本?並且,您是否嘗試過.validate()和.hasErrors()以確保您的所有數據都是有效的? – Daniel

+0

版本是2.5.1。是的,我嘗試使用.valiadte()和.hasErrors()。 –

+0

如果您認爲您可以排除您未能捕捉到的驗證錯誤,還請提供代碼以備份此錯誤。 – cfrick

回答

1

嘗試save(failOnError:true)或檢查的save()返回值 - 這是成功/失敗在Groovy的真相。

您還可以添加logSql: true您application.yml數據源和

logger 'org.hibernate.type.descriptor.sql.BasicBinder', TRACE, ['STDOUT'] 
logger 'org.hibernate.SQL', TRACE, ['STDOUT'] 

您logback.groovy

+0

save(failOnError:true)也不起作用。 –

+1

@AbhisekPattnaik whas確實「不正常」?你會得到一個異常?那麼,賓果,這是它不保存的原因。 – cfrick

1

大概要保存未通過驗證的對象。意思是不符合領域類中描述的最小約束。

調試您的代碼並運行驗證的方法,然後查看錯誤屬性。

object.validate() 
object.errors 

看看 https://docs.grails.org/latest/ref/Constraints/Usage.html

記住的約束關閉所有未聲明的屬性,是強制性的默認保存對象