gpt4 book ai didi

java - JPA 中的 mappedBy 或 Hibernate 中的 inverse ="true"的作用是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:26 24 4
gpt4 key购买 nike

我已经引用了有关 Hibernate 的各种文档,并最终对这个问题得出了一个非常简单的答案。

我只是想澄清一下我对这个问题的最终简单回答是否正确。请帮忙

这是我的答案

Inverse 是hibernate 中tag 的一个属性。一般用于OneToMany/ManyToOne双向映射。

inverse="true" 表示子实体是两个实体之间关系的所有者,子实体应该负责与子表中的外键列的持久化操作。

最佳答案

您的回答是正确的。

“反向”的原因是在数据库中总是有一方控制关系(例如 FK 方),而在双向域模型映射中,您可以对一对多方(添加/删除子项)和子项(设置父项)。这就是为什么双方需要保持同步。

Hibernate 不能自动强制执行同步约束,因此开发人员有责任实现它。 Hibernate 唯一可以做的就是只观察一侧(以便将状态转换转换为 SQL 查询)。

因此,提供 add/removeChild 之类的实用方法是一个好习惯:

@Entity
public class Parent {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", orphanRemoval = true)
private List<Child> children = new ArrayList<Child>();

public List<Child> getChildren() {
return children;
}

public void addChild(Child child) {
children.add(child);
child.setParent(this);
}

public void removeChild(Child child) {
children.remove(child);
child.setParent(null);
}
}

关于java - JPA 中的 mappedBy 或 Hibernate 中的 inverse ="true"的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24666205/

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