我有一个实体“city”,其中列出了一个Object,如下所示:
@ManyToMany(mappedBy = "building", cascade = CascadeType.REMOVE)
@LazyCollection(LazyCollectionOption.FALSE)
@SortComparator(DocumentSelectionComparator.class)
@OrderBy("id")
private List<DocumentSelection> house;
//get set methods..
我现在的问题是我想在某个时刻清除对象,但它总是返回到包含数据的先前状态。我尝试清除对象并保存实体,但它仍然无法正常工作。 这就是我的尝试:
//1
city.setHouse(null)
cityRepository.save(city)
//2
house.clear();
city.setHouse(house)
cityRepository.save(city)
我认为它不起作用,因为该实体正在其他地方被引用,从而改写了这些变化。也许吧?如果是这样我怎么改变它。我真的需要清除那个对象。
感谢您的帮助
答案 0 :(得分:1)
我假设您的关系是双向的(我可以从mappedBy告诉),在这种情况下清除您尝试终止关系的列表,并且要执行此操作,您需要从拥有实体端而不是非生成实体执行此操作侧。
与mappedBy的关系的一侧是非拆分实体,因此您需要从DocumentSelection端删除关系。
为此,您需要遍历列表,然后从该列表中删除当前对象。
答案 1 :(得分:0)
您可以使用孤儿删除功能。
@ManyToMany(mappedBy = "building", cascade = CascadeType.REMOVE, orphanRemoval = true)
然后致电
city.getHouse().clear()
cityRepository.save(city)