Не удается обновить сущность 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');
..
Над работой, но это взломать. По крайней мере, это можно откатить
Мы столкнулись с той же проблемой, и решение, которое мы нашли, состоит в том, чтобы поместить создание сущности в другую транзакцию, но проблема в том, что мы не можем откатить создание:-(
Если кто-то может предложить лучшее решение, мне тоже интересно!