Java 实体中的列表对象返回到以前的状态,尽管已清除它
我有一个实体“城市”,其对象如下所示:Java 实体中的列表对象返回到以前的状态,尽管已清除它,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,我有一个实体“城市”,其对象如下所示: @ManyToMany(mappedBy = "building", cascade = CascadeType.REMOVE) @LazyCollection(LazyCollectionOption.FALSE) @SortComparator(DocumentSelectionComparator.class) @OrderBy("id") private List<DocumentSelection> house; //get set
@ManyToMany(mappedBy = "building", cascade = CascadeType.REMOVE)
@LazyCollection(LazyCollectionOption.FALSE)
@SortComparator(DocumentSelectionComparator.class)
@OrderBy("id")
private List<DocumentSelection> house;
//get set methods..
我认为它不起作用,因为实体在其他地方被引用,因此重写了更改。。大概如果是这样,我该如何改变这一点。我真的需要清除那个物体
感谢您的帮助我假设您的关系是双向的(我可以从mappedBy中看出),在这种情况下,要清除列表,您尝试终止关系,并且要执行此操作,您需要从拥有实体方而不是非拥有实体方执行 与mappedBy的关系的一侧是非Wonning实体,因此您需要从DocumentSelection一侧删除该关系
为此,您需要遍历列表,然后从该列表中删除当前对象。您可以使用孤立删除功能
@ManyToMany(mappedBy = "building", cascade = CascadeType.REMOVE, orphanRemoval = true)
然后打电话
city.getHouse().clear()
cityRepository.save(city)
city.getHouse().clear()
cityRepository.save(city)