Я новичок в Hibernate и пытаюсь научиться этому.Я запутался в использовании @JoinColumn.Я знаю, что он создает столбец, чтобы связать две сущности.Я попробовал:
- Наличие двух классов Person и House
- Класс Person имеет набор домов с отношением OneToMany
In Person Class:
@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>();
Это создает столбец с именем person_id
в таблице House
.
В классе дома:
@ManyToOne
@JoinColumn(name = "house_id")
private Person person;
Это снова создает столбец house_id
на House
столе.Но я ожидал увидеть этот столбец в таблице Person
.Почему это работает так?
Я думал, что аннотация @JoinColumn создает в таблице столбец соединения, к которому мы применили эту аннотацию.Так что в этом случае для класса Person он создал person_id на домашнем столе, а для второго я ожидал увидеть house_id на классе person.Но это также создает это на домашнем столе.Так что я в замешательстве.
Так как же это работает на самом деле?