«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как обрабатывать потерянные узлы в JPA с помощью CascadeType.ALL?

Как обрабатывать потерянные узлы в JPA с помощью CascadeType.ALL?

Опубликовано 4 ноября 2024 г.
Просматривать:661

How to Handle Orphaned Nodes in JPA with CascadeType.ALL?

Особые узлы в JPA с CascadeType.ALL

Несмотря на использование JPA CascadeType.ALL, потерянные узлы сохраняются в базе данных, что затрудняет удаление. Чтобы решить эту проблему, существует несколько подходов в зависимости от поставщика персистентности и версии JPA:

Конфигурация Hibernate

При использовании Hibernate явно определите аннотацию CascadeType.DELETE_ORPHAN в в сочетании с JPA CascadeType.ALL:

@OneToMany(cascade = {CascadeType.ALL, CascadeType.DELETE_ORPHAN})
private List bikes;

Решение JPA (без Hibernate)

При отсутствии Hibernate явно удаляйте дочерние элементы перед удалением родительской записи:

  1. Извлечь основную строку для удаления.
  2. Извлечь дочерние элементы.
  3. Удалить все дочерние элементы.
  4. Удалить основную строку.
  5. Закройте сеанс.

JPA 2.0

В JPA 2.0 появился атрибут orphanRemoval:

@OneToMany(mappedBy="foo", orphanRemoval=true)

Установив для orphanRemoval значение true, JPA автоматически удалит потерянные дочерние записи при удалении родительского объекта.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3