Java org.hibernate.ObjectDeletedException:已删除的实例传递给合并
这是我的删除方法:Java org.hibernate.ObjectDeletedException:已删除的实例传递给合并,java,hibernate,jpa,Java,Hibernate,Jpa,这是我的删除方法: public void removeIletisimAdresi(Integer index){ getUser().getIletisimBilgileri().remove(getUser().getIletisimBilgileri().get(index)) } 这是我的父母关系 所以,如果我调用remove方法并像entityManager.merge(user)那样更新父对象,它会抛出如下异常: 原因:org.hib
public void removeIletisimAdresi(Integer index){
getUser().getIletisimBilgileri().remove(getUser().getIletisimBilgileri().get(index))
}
这是我的父母关系
所以,如果我调用remove方法并像entityManager.merge(user)那样更新父对象,它会抛出如下异常:
原因:org.hibernate.ObjectDeletedException:已删除的实例传递给merge:[com.medikalborsasi.model.IletisimBilgileri#]
您能解释并帮助我如何解决此问题吗?在删除实体之前,此实体必须处于管理状态。我们可以使用一些函数
合并
,查找
,等等。注意:关闭实体管理器
后,其所有实体都将分离
public void remove(Person p) {
Perosn p2 = em.merge(p);
em.remove(p2);
}
我认为问题只存在于代码中
getUser().getIletisimBilgileri().remove(getUser().getIletisimBilgileri().get(index))
映射的方式必须确保,如果从hibernate中删除一个实体,将导致从其他依赖实体中删除同一实体。
例如:
应从A中的列表中删除b的参考。
您不必从A中的列表中明确删除B的引用。
所以按照你的方法你在做什么
getA().getListOfB.remove(getA().getListOfB().get(someIndex));
我希望这个小例子能澄清你的问题
getUser().getIletisimBilgileri().remove(getUser().getIletisimBilgileri().get(index))
Class A
{
/* List of B entity(child) */
List<B> listOfB;
}
Class B
{
/* reference of A(parent) */
A a;
}
hibernateSession.delete(b);
getA().getListOfB.remove(getA().getListOfB().get(someIndex));