Java hibernate: XML мапинг, связь один к одному, урок 4!

preview_player
Показать описание
Один к одному - очень специфическая и редко используемая связь, с помощью которой можно связать одну сущьность не более чем с одной второй сущьностью.
Рекомендации по теме
Комментарии
Автор

А тут разве вообще есть связь? Внешние ключи мы не создаем. Ну я понимаю конечно, что в данном случае мы можем добавлять в таблицу данные один к одному, но это же неудобно. Как я представляю, в связи 1 к 1 используется вспомогательная колонка также, как и в связи многие к 1. Только эта колонка будет помечена как UNIQUE, благодаря чему, мы не сможем туда добавлять повторяющиеся данные.
Я сделал так
user.cfg.xml:
<hibernate-mapping>
<class name="User" table="user">
<id name="id" column="id" type="int">
<generator class="native" />
</id>
<property name="firstName" column="firstname" type="string" />
<property name="lastName" column="lastname" type="string" />
<property name="age" column="age" type="int" />

<many-to-one name="role" class="Role">
<column name="role_id" not-null="true" unique="true" />
</many-to-one>
</class>
</hibernate-mapping>

role.cfg.xml
<hibernate-mapping>
<class name="Role" table="role">
<id name="id" column="id" type="int">
<generator class="native" />
</id>
<property name="title" column="title" type="string" />
</class>
</hibernate-mapping>

Может это конечно какой-то костыль - использую в одном конфиге тэг many-to-one, а в другом вообще не использую каких-либо тэгов на связку, но в принципе создаются таблицы как надо. В моем представлении, таким образом как раз создаются таблицы со связью 1 к 1.

global_silence
Автор

А сколько тебе лет? Такой молодой а уже такими вещами так неплохо владеешь...

alexpantsesnyi