JPA удаляя дочерний элемент удаляет родительский
У меня есть следующие две сущности:
public class Parent implements Serializable
@OneToMany(mappedBy="m_owner", targetEntity = Child.class, orphanRemoval=true)
List<Child> children;
а также
public class Child implements Serializable
@ManyToOne(targetEntity = Parent.class)
Когда я удаляю Родителя, потомки удаляются, как и ожидалось, но когда я удаляю ребенка, Родитель удаляется. Я пытался добавить cascade=CascadeType.DETACH
к аннотации ребенка, но это не помогло. Как сделать так, чтобы удаление детей не влияло на родителей?
1 ответ
Решение
Моя проблема была вызвана тем, что я использовал NamedQuery
удалить ребенка.
@NamedQuery(name="Child.deleteById", query="Delete from Child child where child.m_id=:id")
Это, кажется, обходит аннотации, которые я настроил, и удалил родительский объект.
Чтобы решить эту проблему, я изменил службу удаления, чтобы просто использовать EntityManager.remove()
в этот момент все аннотации сработали.