Почему hibernate создает таблицу соединения, а также столбец соединения? - PullRequest
2 голосов
/ 31 марта 2012

Вот два класса, которые я использую для выражения двунаправленного отношения OneToMany.

Class Contact {
    @OneToMany
    public Set getPhoneNumbers() {
        return phoneNumbers;
    }
}
Class PhoneNumber{
    @ManyToOne
    public Contact getContact() {
        return contact;
    }
}

Hibernate создает таблицу соединений (которая, как мне кажется, подходит для моих нужд)

contact_phonenumber
   -Contact_id
   -phoneNumbers_id

но почему он создает этот дополнительный столбец соединения (contact_id) в таблице phoneNumber

phonenumber
  -id
  -contact_id
  -...

Не достаточно ли таблицы объединения?

Более того, когдаЯ сохраняю номер телефона или контакт, таблица соединения обновляется, но не столбец соединения.Так почему этот столбец присоединения здесь?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 31 марта 2012

Я нашел решение:

Class Contact {
    @OneToMany(mappedBy="contact", targetEntity=PhoneNumber.class, orphanRemoval=false)
    public Set getPhoneNumbers() {
        return phoneNumbers;
    }
}
Class PhoneNumber{
    @ManyToOne
    @JoinTable(name="t_join_contact_phonenumber", joinColumns=@JoinColumn(name="PHONENUMBER_ID"), inverseJoinColumns=@JoinColumn(name="CONTACT_ID"))
    public Contact getContact() {
        return contact;
    }
}

Теперь Hibernate создает только таблицу соединений

t_join_contact_phonenumber
   -CONTACT_ID
   -PHONENUMBER_ID

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...