gpt4 book ai didi

java - ManyToOne 单向禁用约束

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:24 27 4
gpt4 key购买 nike

我有以下单向 ManyToOne 关系:

@Entity
@Table(name = "Child")
public class Child {
@Id
private Integer id;

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Parent parent;
}

@Entity
@Table(name = "parent")
public class Parent{
@Id
private Integer id;
}

当我尝试从数据库中删除父实体时,我遇到了约束冲突。

ORA-02292: integrity constraint violated - child record found

我需要的是父实体被删除,即使它有子实体,但子实体应该保留。

如何改变这种关系?

最佳答案

如果使用关系,则无法使用 JPA。使其成为 ManyToOne 表示外键字段中的值将存在于父表中。 JPA 将无法区分空 fk 值和父表中没有关联行的 fk 值。

如果确实必须完成(并且在我看来不应该这样做),则需要使用基本映射而不是 ManyToOne 来映射 Child 中的整数外键值。这允许它的设置独立于现有的父实体 - null 表示 null,a value 表示一个值。如果需要实体本身,您可以查询关联的父实体。

关于java - ManyToOne 单向禁用约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17974983/

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