Я работаю в приложении SpringBoot с Hibernate, предоставляющим интерфейс REST.
Проблема
Пользователи могут создавать объекты, назовем их parent
. Пользователи могут связать объект parent
с несколькими элементами child
. Эти элементы также состоят из других объектов, но давайте пока будем проще. Я хочу предотвратить случай, когда клиент может сделать следующее:
- создать
parent1
и создать child1, child2
- создать
parent2
и создать child3
- обновление
parent1
с child3
в полезной нагрузке
Такое поведение не должно быть возможным, поскольку элементы child
не должны обновляться, если они принадлежат другому родителю. Моя цель - сделать невозможным обновление parent
и обновление child
, принадлежащее другой parent
.
модели
@Entity(name = "Parent")
@Table(name = "t_parent")
data class Parent(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Int = 0,
@JoinColumn(name = "fk_parent")
@OneToMany(orphanRemoval = true, cascade = [CascadeType.ALL])
val children: MutableList<Child> = mutableListOf()
)
@Table(name = "t_child")
@Entity(name = "Child")
data class Child(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Int = 0,
)
Я использую Spring JpaRepository
для обеспечения устойчивости.
Решения?
Самый глупый способ сделать это - извлечь parent1
из базы данных и удалить все child
элементы из запроса клиента, которые не содержатся в dbParent1
. Думаю, это довольно утомительно и не очень умно.
Спасибо за ваш совет.