gpt4 book ai didi

java - 双向一对多,一方为拥有方

转载 作者:行者123 更新时间:2023-11-30 10:48:16 26 4
gpt4 key购买 nike

没有办法让“一”成为一对多关系的所有者一方吗?每个样本在 @OneToMany 中都有 mappedBy。甚至是 this similar question 的答案有那个。

我希望一方成为拥有方,因为当我添加一个多/ child 时,我也会更改一个/ parent 的一些信息,我只想更新 parent ,以简化代码并确保它所有都在同一个 ACID 事务中。

但我就是做不到。 Hibernate 一直提示

Repeated column in mapping for entity

我的实体:

public class Parent {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@OneToMany(fetch = EAGER, cascade = {ALL}, orphanRemoval = true)
@JoinColumn(name = "parent_id", referencedColumnName = "id", nullable = false)
private final Set<Child> children = new HashSet<>();

}

public class Child {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@ManyToOne
private Parent parent;

}

最佳答案

To solve Repeated column in mapping for entity error.

您可以从 @JoinColumn 注释中删除 nullable=false,如下所示:

代替

@JoinColumn(name = "parent_id", referencedColumnName = "id", nullable = false)

试试

@JoinColumn(name = "parent_id", referencedColumnName = "id", insertable = false, updatable = false)

但是如果你想保留nullable=false,那么

要么从 Child 类中删除 private Parent parent; 声明

使用 @Transient 注释或 private transient Parent parent;

使其成为 transient 的

关于java - 双向一对多,一方为拥有方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35868327/

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