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() в этот момент все аннотации сработали.

Другие вопросы по тегам