У меня список объявлен в двух объектах:
//entity: Foo
@OneToMany(fetch = FetchType.EAGER, mappedBy = "foo", cascade = CascadeType.ALL, orphanRemoval = true)
@Fetch(FetchMode.SUBSELECT)
private List<BarFoo> barFoos;
//entity: Bar
@OneToMany(fetch = FetchType.EAGER, mappedBy = "bar", cascade = CascadeType.ALL, orphanRemoval = true)
@Fetch(FetchMode.SUBSELECT)
private List<BarFoo> barFoos;
Затем я пытаюсь удалить объект Foo из объекта Bar, т.е. мне нужно удалить объект BarFoo из соответствующих списков (в Bar иFoo entity).
Я успешно удалил его, но данные по-прежнему не объединяются. Я не знаю, что еще я могу сделать, чтобы решить эту проблему, поэтому я прошу вас о помощи.
//id from BarFoo class:
@EmbeddedId
private BarFooId barFooId = new BarFooId ();
//id class:
private Integer barId;
private Integer fooId;
if(!barFoosToDelete.isEmpty()){
barFoosToDelete.stream()
.map(BarFoo::getFoo)
.forEach(foo -> foo.getBarFoos().removeAll(barFoosToDelete.stream()
.filter(barFoo -> barFoo.getFoo().equals(foo))
.collect(Collectors.toList())));
barFoosToDelete.forEach(barFoo -> fooCRUD.merge(barFoo.getFoo()));
barFoosToDelete.forEach(barFoo -> barFooCRUD.remove(barFoo));
barFoosToDelete.clear();
}