簡體   English   中英

'保存'不起作用,嘗試刷新和failOnError:true,但未給出錯誤

[英]'save' does not work, tried flush and failOnError:true but no error was given

我正在嘗試使用flush:truesave()操作更新數據庫。 調試器顯示狀態已更新,但是當我使用此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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM