没有办法让“一”成为一对多关系的所有者一方吗?每个样本在 @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;
关于java - 双向一对多,一方为拥有方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35868327/