Session.flush()导致org.hibernate.StaleStateException:批处理更新从更新返回意外行数:1实际行数:0预期值:1

时间:2019-06-24 04:37:23

标签: java hibernate hibernate-mapping

我有一个Java后端Web应用程序,它在某种数据库更新后刚刚开始引发错误。

我已经能够将代码隔离到刷新Session变量的一行中:

Session session=getSession();

session.saveOrUpdate(parm);

session.flush();  //This is where it errors

它抛出此错误:

ERROR AbstractFlushingEventListener无法将数据库状态与会话同步

org.hibernate.StaleStateException:批处理更新从更新返回意外行数:1实际行数:0预期值:1

该代码一年多来没有更改;它刚刚开始抛出此错误。

有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:0)

此错误通常是在休眠状态无法找到需要更新的所有行时引起的。这意味着,当您尝试更新从数据库中拉出的某些对象时,它们实际上不再存在(或一开始就不存在)。

这可能是因为另一个线程正在删除它们,或者数据库的隔离模式设置为read_uncommited,因此由另一个事务创建的行无法保存(由于事务失败)而不再存在。

ref:https://stackoverflow.com/questions/21625059/org-hibernate-stalestateexception-batch-update-returned-unexpected-row-count-fr