- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经引用了有关 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/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!