Я занимаюсь разработкой веб-приложения Spring Boot с использованием JPA / Hibernate. Приложение получает записи данных в формате JSON, которые сопоставляются с классами @Entity. Макет довольно прост, у него есть основной класс сущностей с одним набором дочерних сущностей. Я сопоставляю их через @ OneToMany / @ ManytoOne. Синтаксический анализ, чтение данных из БД, вставка / обновление данных в БД прекрасно работает со стандартными функциями репозитория JpaRepository ....
Дело в том, что когда я получаю запись, которую нужно обновить, я хочу хранить только те дочерние записи, которые идут с запросом. Если есть другие дочерние записи, которые ранее были сохранены для родительской записи и которых нет в текущей записи из запроса, их необходимо удалить из базы данных.
Мои мысли для достижения это путем сравнения набора дочерних записей с полученными из базы данных, размещения тех, которых не было в списке, и удаления их, а затем сохранения сущности. Другой вариант - сначала удалить все дочерние записи, а затем сохранить новую сущность ....
Теперь у меня вопрос: нет ли более элегантного способа добиться этого с помощью JPA / Hibernate? , Некоторая аннотация или вариант или что-то. Я не нашел подход, который работал для меня еще. Какие у вас идеи?
обновление: моя проблема не в том, чтобы удалить родительскую сущность, а затем удалить дочернюю запись. Родительский объект остается без изменений (или обновляется ...). Я хочу удалить только дочерние записи, и только те, которые отсутствуют в текущем объекте запроса, но в базе данных.
Пример: в базе данных в родительской таблице есть запись с parentID = 1. В дочерней таблице хранятся 3 записи, на которые ссылаются childID 1, 2, 3.
Теперь клиент отправляет мне объект с parentID = 1 для обновления в базе данных. В дочернем наборе присутствуют только дочерние объекты с childID 1 и 2. Теперь задача состоит в том, чтобы обновить объекты (что бы ни изменилось в полях), удалив дочернюю запись с id = 3 из базы данных
спасибо и приветствия.