Spring boot Spring Boot PersistentBag remove()引发不支持的操作异常

Spring boot Spring Boot PersistentBag remove()引发不支持的操作异常,spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,根据本文,我实现了以下父子双向实体关联 public class Parent { @OneToMany(mappedBy = parent, cascade = CasacadeType.ALL, orphanRemoval = true) private List<Child> children = new ArrayList<>(); public void removeChild(Child child) { chil

根据本文,我实现了以下父子双向实体关联

public class Parent { 
    @OneToMany(mappedBy = parent, cascade = CasacadeType.ALL, orphanRemoval = true) 
    private List<Child> children = new ArrayList<>();

    public void removeChild(Child child) {
        children.remove(child);
        child.setParent(null);
    }
}

public class Child {
    @ManyToOne
    @JoinColumn(name = "PARENT_ID")
    private Parent parent;
}
公共类父类{
@OneToMany(mappedBy=parent,cascade=CasacadeType.ALL,orphanRemoving=true)
private List children=new ArrayList();
public void removeChild(子级){
儿童。移除(儿童);
setParent(null);
}
}
公营儿童{
@许多酮
@JoinColumn(name=“PARENT\u ID”)
私人家长;
}
现在,即使我执行remove()操作,也会抛出一个UnsupportedOperationException, 因为Spring总是返回一个PersistentBag,它不支持remove()、removeAll()或clear()


如何从父对象中删除子对象?

如果要使用分离实例的重新附加,则必须重写
equals()
hashCode()
方法。 Hibernate仅在特定会话范围内保证持久标识(数据库行)和Java标识的等价性。因此,一旦我们混合了在不同会话中检索的实例,我们就必须实现
equals()
hashCode()
()

注意:在给定的文章中,还实现了
equals()
hashCode()

对于即时抓取,
remove()
将不起作用()。
@ManyToOne
关联使用
FetchType.LAZY
策略,因为默认情况下
@ManyToOne
关联使用
FetchType.EAGER
如果要使用分离实例的重新连接,必须重写
equals()
hashCode()
方法。 Hibernate仅在特定会话范围内保证持久标识(数据库行)和Java标识的等价性。因此,一旦我们混合了在不同会话中检索的实例,我们就必须实现
equals()
hashCode()
()

注意:在给定的文章中,还实现了
equals()
hashCode()

对于即时抓取,
remove()
将不起作用()。
@ManyToOne
关联使用
FetchType.LAZY
策略,因为默认情况下
@ManyToOne
关联使用
FetchType.EAGER

谢谢您的回答。但是equals()和hashCode()已经实现/重写。@Eldon在您的类中实现了吗?孩子们都是懒洋洋的,对吧?是的,你是对的。在我的类中实现,我加载它lazyYou不使用@ManyToOne作为FetchType.LAZY正确,为什么不在这里发布完整的实现?谢谢你的回答。但是equals()和hashCode()已经实现/重写。@Eldon在您的类中实现了吗?孩子们都是懒洋洋的,对吧?是的,你是对的。在我的类中实现,我加载它lazyYou不使用@ManyToOne作为FetchType.LAZY对吗?为什么不在这里发布完整的实现?