[英]'save' does not work, tried flush and failOnError:true but no error was given
我正在嘗試使用flush:true
為save()
操作更新數據庫。 調試器顯示狀態已更新,但是當我使用此sql時
Select * from domain_name where id = 123
我仍然有舊的身份。
我正在使用Quartz插件來運行從同一表讀取的計划的cron作業:
DomainName.withTransaction{ status ->
try
{
DomainName name = DomainName.get(123)
name.status = "newstatus"
name.save(flush:true,failOnError:true)
}
catch(Exception rte)
{
log.error "Update failed with error ${rte.message}"
status.setRollbackOnly()
}
}
有沒有人遇到過類似的問題? 打開config.groovy中的休眠日志沒有錯誤
debug 'org.hibernate.SQL'
'org.hibernate.transaction'
我遇到了這個問題。 原來,要更新的實例是通過動態查找器獲取的。 一旦我使用get(id)獲取實例,則將值保存到數據庫表中。
在故障排除期間,我打開了SQL日志記錄。 當應該通過查找器獲取實例時,如果應該更新該行,則不會將任何更新語句寫入控制台。 使用get(id)將更新語句寫入控制台。
我認為問題出在給定的代碼塊之前。
您是否在進行此事務之前通過臟檢查(例如Domain.get()
)拉動了該對象,該事務仍然存在? 我的建議是仔細檢查您的代碼,脫離所有臟檢查(例如,使用Domain.discard()
),然后重試。 那應該解決您的問題。
我面臨着類似的問題。 我通過動態方法獲取對象。 然后將一個屬性傳遞給另一個方法。 在另一種方法中,我再次通過動態查找器獲取對象。
我保存了域對象,但沒有保存。 我嘗試了failOnError
以及flush
但是沒有用。
我通過了域對象而不是使用動態查找器,它起作用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.