运行grails 2.3.3我花时间修复了在hibernate数据实例更新期间发生的错误。
只有在检查基础数据表没有被更改时才识别出问题,因为错误捕获没有标记任何问题。
以下是代码:
try{
currSlot.properties = currSlotBindMap
// currSlot.properties updated now save all upd transactions dB
try{
def saveRtn = currSlot.save(flush: true)
}
catch (Exception eWrite)
{
returnValue = null
}
}
catch (Exception eWrite)
{
returnValue = null
}
属性设置或刷新保存都没有产生任何错误 - 但更新从未出现在基础数据存储区中。
唯一的问题是,当保存失败时,saveRtn设置为空值,而当保存成功时,saveRtn包含已保存实例的id:
saveRtn: homevu1.VidSlotData : 868
我可以根据返回值的这个差异来构建一些检查,但我很惊讶没有发生错误。
欢迎有关如何捕获这些数据更新问题的任何建议和想法吗?
顺便提一下,问题是更新过程中数据类型冲突的结果。
-Mike
答案 0 :(得分:0)
尝试使用.save(failOnError: true, flush: true)
failOnError
将在保存失败时引发异常。
您可以在Grails documentation中阅读更多相关信息。