gpt4 book ai didi

java - @OnDelete 仅与 @OneToMany 一起使用

转载 作者:行者123 更新时间:2023-12-02 13:09:51 26 4
gpt4 key购买 nike

我对带有 @OneToMany 关系的注释 @OnDelete 存在问题。

public class Patent {

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

}

public class Child {
}

当我运行它时,我收到此错误:“只有反向一对多关联可以使用 on-delete="cascade"”。我需要如何更改代码才能使其正常运行,而无需双向关系?我知道,可以通过向 Child 类添加 @ManyToOne 关系和适当的注释来解决这个问题,但我不想使用这个解决方案。

编辑:这样做的目的是我需要在导出的 ddl 架构中生成“删除级联”到外键约束。

最佳答案

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

示例:

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

但是我认为您的映射是完全错误的,对于这种关系,您应该将 Patent 字段添加到您的 Child 类中,将关系标记为 ManyToOne,然后使用 JoinColumn 并将引用设置为parent_id。使用Patent内的mappedBy和orphanRemoval选项 - 可用性将如您所愿。

关于java - @OnDelete 仅与 @OneToMany 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com