【发布时间】:2020-01-20 15:02:39
【问题描述】:
我是 Hibernate 的新手,正在努力学习它。我对@JoinColumn 的使用感到困惑。我知道它创建了一个列来关联两个实体。我试过的是:
- 有两个类 Person 和 House
- Person 类有一组具有 OneToMany 关系的 House
个人类:
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "person_id") // this creates a FK on house table with this name
private Set<House> houses = new HashSet<House>();
这会在 House 表上创建一个名为 person_id 的列。
内部课程:
@ManyToOne
@JoinColumn(name = "house_id")
private Person person;
这会在House 表上再次创建house_id 列。但我期待在Person 表上看到此列。为什么会这样?
我在想@JoinColumn 注释会在表上创建一个连接列,这是我们应用此注释的实体。因此,在这种情况下,对于 Person 类,它在 house 表上创建了 person_id,而对于第二个,我希望在 person 类上看到 house_id。但它也在房子的桌子上创建它。所以我很困惑。
那么它实际上是如何工作的呢?
【问题讨论】:
-
您是否尝试指定属性
mappedBy,例如:@OneToMany(mappedBy="houses")? -
是的,我试过了,这样实际上就不那么混乱了,非常感谢。
标签: hibernate jpa orm hibernate-mapping