有没有办法让hibernate识别为具有ID!= null的实体的新实体?

时间:2015-04-10 07:57:41

标签: hibernate jpa

我首先解释一下我的目标: 我必须更新一个非常复杂的实体,并且更改的实体来自外部源,因此它是一个非托管实体,并且它上面的任何merge()都会失败。

我的想法是简单地执行删除后跟一个插入:

@Transactional
public class MyClass{
 ....
public void updateEntity(Entity newEntity){ //altered entity, newly created
     Entity oldEntity = dao.findById(newEntity.getId()); //retrieves managed entity object
     dao.delete(oldEntity); //deletes it
     dao.insert(newEntity); //calls EntityManager.persist()

无论如何,insert()会抛出以下内容:

Detached entity passed to persist

为了解决这个问题,我必须使ID无效,以便hibernate将其识别为新实体,无论如何我想保留旧ID以跟踪更新。

ID当前是自动生成的,因此看起来hibernate会将任何具有ID!= null的实体识别为基础表中已存在的条目,因此将抛出该异常。 有没有办法防止这种情况?

0 个答案:

没有答案