Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用EntityManger的两个实例时删除实体_Java_Spring_Hibernate_Sql Delete_Hibernate Entitymanager - Fatal编程技术网

Java 使用EntityManger的两个实例时删除实体

Java 使用EntityManger的两个实例时删除实体,java,spring,hibernate,sql-delete,hibernate-entitymanager,Java,Spring,Hibernate,Sql Delete,Hibernate Entitymanager,我试图删除实体,但出现以下异常: java.lang.IllegalArgumentException:删除分离的实例 我知道我的问题是我使用了两个不同的EntityManger实例。我寻找解决方案,但我找到的所有解决方案都是这样的: entityManger.remove(entityManger.merge(entity)); 还有另一种方法可以解决此问题,而不是使用合并和删除功能?异常表示您的实体不受持久上下文的管理。不能删除非托管实体。你可以用 Entity entity = enti

我试图删除实体,但出现以下异常:

java.lang.IllegalArgumentException:删除分离的实例

我知道我的问题是我使用了两个不同的EntityManger实例。我寻找解决方案,但我找到的所有解决方案都是这样的:

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

还有另一种方法可以解决此问题,而不是使用合并和删除功能?

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

Entity entity = entityManager.getReference(Entity.class, id);
entityManager.remove(entity);
这更好,因为你有懒惰的例子。
抱歉,我的英文版)

这是一个不要抛出我的异常,但它不会删除我的实体,可能是因为我正在使用一个EntityManager进行getReference,并使用另一个EntityManager进行删除。我不知道这是怎么可能的)但是使用EntityManager控制要删除的实体。为什么有两个实体管理器?你们两个数据库?在一个类中,我找到了要删除的实体(第一个EntityManger)。该类调用另一个类,我在那里实际删除了该对象(第二个EntityManger)。好的。对我来说,程序的逻辑是不正确的。您不需要创建多实体管理器。在单独的类中创建一个,并在任何地方使用它。一定要使用事务处理。是的,我改变了一点架构,并使用了您的解决方案。谢谢