我有一个java的后端Web应用程序,刚刚开始抛出某种数据库更新后的错误。
我已经能够将代码隔离到刷新Session变量的单行中:
Session session=getSession();
session.saveOrUpdate(parm);
session.flush(); //This is where it errors
它抛出这个错误:
ERROR AbstractFlushingEventListener无法将数据库状态与会话同步
org. hibernate.StaleStateException:批量更新从更新返回意外行数:1实际行数:0预期:1
代码一年多没有改变;它刚刚开始抛出这个错误。
有什么建议吗?
谢啦
这个错误通常是由于hibernate找不到它需要更新的所有行而引起的。这意味着当您尝试更新从DB中提取的一些对象时,它们不再真正存在(或者从一开始就不存在)。
这可能是因为另一个线程正在删除它们,或者DB的隔离模式设置为read_uncommited,因此由另一个事务创建的行未能保存(由于事务失败)并且不再存在。
裁判:https://stackoverflow.com/questions/21625059/org-hibernate-stalestateexception-batch-update-returned-unexpected-row-count-fr