Hibernate автоматически обрабатывает внешний ключ для вас в этом случае. Что касается Java, вам не нужно думать о внешних ключах, а нужно агрегировать. Вот почему Category
содержит (ссылка на) User
объект, а не FK. Связывание между свойством user
класса Category
и столбцом FK в таблице USER
указывается в отображении Hibernate.
Если вы затем создадите Критерии или Запрос с использованием этих классов, Hibernate автоматически сгенерирует запрос SQL, используя соответствующий FK. У меня нет опыта работы с HQL, но я уверен, что Hibernate справится и с этим правильно.
Обновление: Пример HQL:
from Category as category inner join fetch category.user as user
Пример адаптирован из здесь .
Дополнительные сведения о сопоставлении см. В справочнике Hibernate, главы с 5 по 7.
.