Как удалить Entity и все зависящие от него объекты без многих SQL в OneToMany?
Вот простой класс, который имеет список двух сущностей. Лишние методы и филды скрыты. При удалении Restaurant происходит большое количество SQL запросов ( Он удаляет 1 сущность за 1 SQL запрос, если таких сущностей будет 200, то будет 202 sql запроса ).
@Entity
public class Restaurant extends AbstractNamedEntity {
@OneToMany(mappedBy = "restaurant", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Dish> dishes;
@OneToMany(mappedBy = "restaurant", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Vote> votes;
}
Я так понимаю, выхода из ситуации два:
Большой @Query запрос, но не очень понимаю, как его сделать с двумя зависящими сущностями, с одной легко:
DELETE order FROM Order order JOIN FETCH Dish order.dish dish ON dish.order_id = order.id
Буду рад, если поможете добавить туда еще и Vote, чтобы можно было удалить все сразу ( по одному - кинет ConstraintViolationException, надо в одной транзакции ).
- NamedGraph, но при двух зависимых сущностях происходит MultipleBagFetchException. Я так понимаю, единственный вариант от нее избавиться это заменить List на Set, что не очень хочется делать, я был бы благодарен, если бы Вы помогли решить задачу первым вариантом или предложили альтернативу.
Спасибо!