Не удается обновить сущность JPA после сохранения?

Я использую Hibernate 4.1.10.Final в качестве провайдера jpa (с контейнером Spring) и пытаюсь обновить сущность jpa после ее сохранения, но каждый раз, когда я получаю исключение org.hibernate.StaleObjectStateException с сообщением: строка была обновлена ​​или удалена другим транзакция (или сопоставление несохраненного значения было неверным): ... мой код очень прост:

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

Что-то не так? Большое спасибо за Вашу помощь.

2 ответа

Столкнулся с той же проблемой - с помощью 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');
  ..

Над работой, но это взломать. По крайней мере, это можно откатить

Мы столкнулись с той же проблемой, и решение, которое мы нашли, состоит в том, чтобы поместить создание сущности в другую транзакцию, но проблема в том, что мы не можем откатить создание:-(

Если кто-то может предложить лучшее решение, мне тоже интересно!

Другие вопросы по тегам