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)。好的。对我来说,程序的逻辑是不正确的。您不需要创建多实体管理器。在单独的类中创建一个,并在任何地方使用它。一定要使用事务处理。是的,我改变了一点架构,并使用了您的解决方案。谢谢