Как удалить 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;
}

Я так понимаю, выхода из ситуации два:

  1. Большой @Query запрос, но не очень понимаю, как его сделать с двумя зависящими сущностями, с одной легко:

    DELETE order FROM Order order JOIN FETCH Dish order.dish dish ON dish.order_id = order.id

Буду рад, если поможете добавить туда еще и Vote, чтобы можно было удалить все сразу ( по одному - кинет ConstraintViolationException, надо в одной транзакции ).

  1. NamedGraph, но при двух зависимых сущностях происходит MultipleBagFetchException. Я так понимаю, единственный вариант от нее избавиться это заменить List на Set, что не очень хочется делать, я был бы благодарен, если бы Вы помогли решить задачу первым вариантом или предложили альтернативу.

Спасибо!


Ответы (0 шт):