2017-03-08 21 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