什么时候出现Hibernate org.hibernate.StaleStateException?

时间:2015-01-08 08:22:01

标签: java spring hibernate java-ee

我收到了org.hibernate.StaleStateException。

这个异常什么时候可以进入休眠状态?

3 个答案:

答案 0 :(得分:1)

如果你使用getSession()。save(obj);尝试使用getSession()更改为它.saveOrUpdate(obj);.这应该在它不存在时保存你的对象并在它出现时更新它(没有超大字段)。

答案 1 :(得分:0)

来自文档:

  

当版本号或时间戳检查失败时抛出,指示   Session包含过时数据(使用长事务时)   版本化)。如果我们尝试删除或更新一行,也会发生   不存在。

     

请注意,此异常通常表示用户失败   为类指定正确的unsaved-value策略!

请看here

答案 2 :(得分:0)

除了充分的理由,即实际上有两个线程/用户同时在同一个数据上工作,根据我的经验,如果应用程序合并分离的实体而不考虑在这种情况下,{{1}返回一个新的实体实例(具有更新的版本/时间戳)。

如果应用程序不允许对原始实体实例进行垃圾回收,则可以在后续更新调用中再次使用它,有效地尝试使用陈旧数据(比持久性副本更早版本化的数据)更新持久层。