Объект списка в объекте возвращается в предыдущее состояние, несмотря на его очистку - PullRequest
0 голосов
/ 11 июня 2018

У меня есть сущность "город" с Объектом, перечисленным в нем следующим образом:

@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)

Я полагаю, что это не работает, потому что на сущность ссылаются где-то еще, перезаписывая изменения ... может быть?если так, как я могу изменить это.Мне действительно нужно очистить этот объект.

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы можете использовать функцию удаления сирот.

@ManyToMany(mappedBy = "building", cascade = CascadeType.REMOVE, orphanRemoval = true)

, а затем позвоните

city.getHouse().clear()
cityRepository.save(city)
0 голосов
/ 11 июня 2018

Я предполагаю, что ваше отношение является двунаправленным (я могу сказать из mappedBy), в этом случае, чтобы очистить список, который вы пытаетесь разорвать, и для этого вам нужно сделать это со стороны объекта-владельца, а не объекта-владельцаside.

Стороной отношения с mappedBy является объект, который не имеет отношения, поэтому вам нужно удалить отношение со стороны DocumentSelection.

Для этого вам нужно перебрать свой список, затем удалитьтекущий объект из этого списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...