繁体   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