2017-03-08 71 views
1

的两个实例,我试图删除实体删除实体,但我得到这个异常:同时使用EntityManger

java.lang.IllegalArgumentException: Removing a detached instance

我明白我的问题是,我使用两种不同的EntityManger实例。我看出来了解决方案,但所有我找到了解决办法是这样的:

entityManger.remove(entityManger.merge(entity)); 

还有另一种方式来解决这个问题,而不是使用合并和删除的功能?

回答

2

异常表示您的实体不受持久性上下文管理。您不能删除未管理的实体。您可以使用

Entity entity = entityManager.getReference(Entity.class, id); 
entityManager.remove(entity); 

这是更好的,因为你得到懒惰的实例。 对不起,我的英语)

+0

这是不会抛出我的例外,但它并不删除我的实体,可能是因为我正在做一个EntityManager getReference和删除与其他EntityManager。 – Sagie

+0

我不知道它是如何可能的)但使用EntityManager来控制你想删除的实体。为什么你有两个EntityManager?你两个数据库? –

+0

在一个类中,我找到了我想要删除的实体(First EntityManger)。那个类调用其他类,在那里我实际上删除了对象(第二个EntityManger)。 – Sagie