我的注释@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模式中的外键约束。
答案 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选项 - 可用性将与您想要的相同。