Я использую Hibernate в качестве провайдера JPA и в функции создаю экземпляр разных объектов. Как только я вызываю clear()
для одного объекта, я не могу persist()
для других объектов. Мой код намного сложнее, и в какой-то момент я вынужден вызывать flush()
и clear()
для одного типа сущностей (и НЕ для других типов), чтобы освободить память.
Упрощение моего кода выглядит следующим образом:
@Transactional
void function()
{
EntityType1 entity1 = new EntityType1();
EntityType2 entity2 = new EntityType2();
//...... do operations on entity1
entity1.persist();
entity1.flush();
entity1.clear();
//...... do operations on entity2
entity2.persist();
}
При вызове entity2.persist()
у меня возникает следующая ошибка: org.springframework.orm.jpa.JpaSystemException: org.hibernate.PersistentObjectException: отдельный объект передается для сохранения
entity2
уже назначенid
? ... если это так, Hibernate ожидает обновления объекта, а не сохранения нового экземпляра. В этом случае вызовитеmerge()
для присоединения экземпляра перед вызовомpersist()
- person Brad   schedule 10.08.2012