2017-03-08 2 views
1

Je suis en train de supprimer l'entité mais je reçois cette exception:Supprimer entité tout en utilisant deux instances de EntityManger

java.lang.IllegalArgumentException: Removing a detached instance

Je comprends que mon problème est que j'utilise deux instances de EntityManger différentes. Je regardais une solution mais toutes les solutions que j'ai trouvé quelque chose comme ceci:

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

Il y a une autre façon de résoudre ce problème au lieu d'utiliser la fusion et de supprimer la fonction?

Répondre

2

Exception indique que votre entité n'est pas gérée par le contexte persistant. Vous ne pouvez pas supprimer une entité non gérée. Vous pouvez utiliser

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

Il est préférable, car vous obtenez une instance paresseuse. Désolé pour mon anglais)

+0

Ceci ne me jette pas l'exception mais il ne faut pas supprimer mon entité, probablement parce que je fais getReference avec un EntityManager et l'enlève avec d'autres EntityManager. – Sagie

+0

Je ne sais pas comment c'est possible) Mais utilisez EntityManager qui commande l'entité que vous voulez supprimer. Et pourquoi avez-vous deux EntityManager? Vous deux DataBase? –

+0

Dans une classe, je trouve l'entité que je veux supprimer (First EntityManger). Cette classe appelle à l'autre classe que là je retire actaully l'objet (Second EntityManger). – Sagie