@maxvinogradov

Как удалить Entity и все ассоциированные Entity вместе с ним?

Вот пример Энтити, лишние методы и филды пропущены.
public class Restaurant extends AbstractNamedEntity {
    @OneToMany(mappedBy = "restaurant", cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<Vote> votes;
    @OneToMany(mappedBy = "restaurant", cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<Dish> dishes;
}

Если я сейчас удаляю Restaurant, то происходит много SQL, потому что каждое Entity удаляется отдельным SQL.
Т.е. если будет 200 Dish, то будет 202 SQL.

Как мне удалять это без спама SQL запросами? Читал статью, что CascadeType.Remove нельзя использовать при ToMany ассоциациях.

NamedGraph не работает, ловлю ConstraintViolationException
public static final String GRAPH_RESTAURANT_WITH_VOTES_DISHES = "Restaurant with votes-dishes.Graph";
    @Transactional
    @Modifying
    @EntityGraph(GRAPH_RESTAURANT_WITH_VOTES_DISHES)
    @Query("DELETE FROM Restaurant r WHERE r.id=:id")
    int deleteRestaurantById(int id);


Как-то можно это сделать в одном @Query?
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽