java - JPA/Hibernate 单向 OneToMany 为“mappedBy”
问题描述
我最近在我们的仓库中发现了这样的映射:
@Entity
...
public class Foo{
...
@OneToMany(mappedBy = "someField", cascade = CascadeType.ALL, orphanRemoval = true)
public Set<Bar> bars;
...
}
@Entity
@IdClass(Bar.Key.class)
...
public class Bar{
@Id
public long someField;
@Id
public long anotherField;
...
static class Key implements Serializable {
public long someField;
public long anotherField;
}
}
两个表中都没有外键。我很惊讶课堂上没有@ManyToOne
字段并且没有注释as 。无论如何,它工作得很好:没有多余的更新——就像它是一个双向映射。我不是 JPA/Hibernate 方面的专家,而且我从未在教程/指南/文档中看到过这样的映射。我试图用谷歌搜索这样的映射,但没有找到任何解释。可以像这样映射实体吗?谢谢!Bar
@OneToMany
@JoinColumn
mappedBy
解决方案
双向一对多和多对一关联映射都很好。但是您应该避免在域模型中进行单向的一对多关联。否则,Hibernate 可能会创建意外的表并执行比您预期更多的 SQL 语句。
单向一对多关联的定义似乎不是问题。您只需要一个映射关联和@OneToMany 关系的属性。
参考见参考
推荐阅读
- python - 如何在 DataFrame 的一列中添加 DataFrame
- django - Django rest 框架 - 在模型的保存方法中引发 ValidationError。如何将错误传递给http响应
- twitter - 用于参与 api twitter 的包
- java - 在模拟器中打开后android应用程序崩溃
- reactjs - React Native 在哪里设置全局监听器?
- node.js - 每个快速会话持续存在的 Nodejs 变量
- ios - 计算和位置固定的最小高度在移动设备上不起作用
- traefik - Traefik 未在 swarm 模式下设置后端/前端
- javascript - 在计时器上自动更新 JSP 页面
- angular - 子路由的角度路由问题