1

我使用 Hibernate 4.1.10.Final 作为 jpa 提供者(带有 spring 容器),并且我尝试在持久化它之后更新一个 jpa 实体,但是每次我得到一个带有消息的 org.hibernate.StaleObjectStateException 时:Row was updated or deleted by another交易(或未保存的值映射不正确):...我的代码非常简单:

@Transactional
public void test() {
  TestEntity e = new TestEntity();
  e.setName("test");
  ......
  em.persist(e);
  ......
  e.setComment("memo...");
}

有什么问题吗?非常感谢您的帮助。

4

2 回答 2

1

遇到同样的问题 - 使用 JPA 2.0 (Hibernate 4.2.4.Final/Spring 3.2.8.RELEASE) 到目前为止,唯一的方法是分离实体,再次找到它,然后更新它,例如

  e = new E();  // assume E has @ID int id;
  em.persist(e);
  em.detach(e);
  e = em.find(e.getId());
  e.setFoo('foo');
  ..

上面的工作,但它是一个黑客。至少可以回滚

于 2014-11-19T05:38:52.203 回答
0

我们遇到了同样的问题,我们找到的解决方案是将实体的创建放在另一个事务中,但问题是我们无法回滚创建:-(

如果有人提出更好的解决方案,我也很感兴趣!

于 2013-06-11T15:43:40.327 回答