JPA删除子项删除父项

时间:2013-12-26 22:43:58

标签: java database jpa cascade

我有以下两个实体:

    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)

当我删除Parent时,会按预期删除子项,但是当我删除子项时,将删除Parent。我尝试将cascade=CascadeType.DETACH添加到孩子的注释中,但这没有帮助。如何删除子项对父母没有影响?

1 个答案:

答案 0 :(得分:3)

我的问题是因为我使用NamedQuery来删除孩子。

@NamedQuery(name="Child.deleteById", query="Delete from Child child where child.m_id=:id")

这似乎绕过了我设置的注释并删除了父实体。

为了解决这个问题,我将删除服务更改为只使用EntityManager.remove(),此时所有注释都有效。