在我们的网站上,我们有两个针对同一个表的操作,一个读取多行,另一个删除一行。
我们正在使用Spring 3.1和Hibernate 3.6。
确切的操作是
EntityManager.createQuery().getResultList();
和
EntityManager.remove();
我们在remove()线程上获取StaleObjectStateException,而不是在getResultList()线程上。问题是,为什么读取会导致StaleObjectException?
答案 0 :(得分:0)
另一个可能的事情是您要覆盖版本属性的值,因此entityManager不仅将实例/实体标记为已修改,而且还执行具有较低/未预期版本值的更新查询。
此致
答案 1 :(得分:0)
这个问题的根本原因与Hibernate或Spring完全无关,这是一个HTML / Javascript问题,每次点击相关链接时都会发送两个单独的HTTP请求。 (这两个请求都是编辑,因此这是冲突的根源。)
只需将此答案放在此处,以便人们知道Spring和Hibernate能够正常工作。