@OnDelete仅限@OneToMany

时间:2017-05-16 16:07:07

标签: java hibernate jpa

我的注释@OnDelete@OneToMany关系有问题。

public class Patent {

    @OneToMany
    @JoinCollumn(name = "parent_id")
    @OnDelete(action = OnDeleteAction.CASCADE)
    private List<Child> children;

}

public class Child {
}

当我运行它时,我收到此错误:&#34;只有反对一对多关联可能会使用on-delete="cascade"&#34;。如何在没有双向关系的情况下更改代码以使其正常运行?我知道,可以通过将@ManyToOne关系和适当的注释添加到Child类来解决,但我不想使用此解决方案。

编辑:目的是我需要在删除级联&#34;上生成&#34;到导出的ddl模式中的外键约束。

1 个答案:

答案 0 :(得分:1)

您只需要为OneToMany关系使用orphanRemoval参数。请参阅https://docs.oracle.com/cd/E19798-01/821-1841/giqxy/以供参考。

示例:

@OneToMany(mappedBy="customer", orphanRemoval="true")
public List<Order> getOrders() { ... }

但是我认为您的映射是非常错误的,对于这种关系,您应该将专利字段添加到您的Child类,将关系标记为ManyToOne,然后使用JoinCollumn并将引用设置为parent_id。使用Patents中的mappedBy和orphanRemoval选项 - 可用性将与您想要的相同。