Задать вопрос
@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?
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Сложный 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы