1

Hibernate 4.1.10.Final を jpa プロバイダーとして (Spring コンテナーを使用して) 使用し、永続化した後に jpa エンティティを更新しようとしましたが、org.hibernate.StaleObjectStateException を取得するたびにメッセージ: Row was updated or deleted by another transaction (または unsaved-value マッピングが間違っていた): ... 私のコードは非常に単純です:

@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 に答える