我收到了org.hibernate.StaleStateException。
这个异常什么时候可以进入休眠状态?
答案 0 :(得分:1)
如果你使用getSession()。save(obj);尝试使用getSession()更改为它.saveOrUpdate(obj);.这应该在它不存在时保存你的对象并在它出现时更新它(没有超大字段)。
答案 1 :(得分:0)
来自文档:
当版本号或时间戳检查失败时抛出,指示 Session包含过时数据(使用长事务时) 版本化)。如果我们尝试删除或更新一行,也会发生 不存在。
请注意,此异常通常表示用户失败 为类指定正确的unsaved-value策略!
请看here。
答案 2 :(得分:0)
除了充分的理由,即实际上有两个线程/用户同时在同一个数据上工作,根据我的经验,如果应用程序合并分离的实体而不考虑在这种情况下,{{1}返回一个新的实体实例(具有更新的版本/时间戳)。
如果应用程序不允许对原始实体实例进行垃圾回收,则可以在后续更新调用中再次使用它,有效地尝试使用陈旧数据(比持久性副本更早版本化的数据)更新持久层。