Сопоставить однозначную связь с hibernate - PullRequest
0 голосов
/ 15 марта 2012

Может ли кто-нибудь объяснить мне, как сопоставить однозначную связь с hibernate (используя сопоставление XML-файлов, а НЕ аннотации)?

Это правила:

  • Менюможет иметь 0 или 1 связанную область.
  • область принадлежит меню.(Или, если вам проще его смоделировать: с областью может быть связано 0 или 1 меню).

Вот нужные ТАБЛИЦЫ (я хочу использовать внешние ключи):

TABLE MENU:
ID
NAME
FKID_AREA

TABLE AREA:
ID
NAME
FKID_MENU

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 марта 2012

Вы должны удалить FKID_MENU из таблицы AREA.Согласно вашему описанию, ваше отображение hbm будет ниже

<class name="Menu">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
    <property name="name" cloumn="name"/>
    <many-to-one name="area" column="FKID_AREA" class="Area"/>
</class>

<class name="Area">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
    <property name="name" cloumn="name"/>
</class>
0 голосов
/ 15 марта 2012

Вы должны удалить FKID_AREA из таблицы MENU, потому что он не нужен (и даже является проблемой, поскольку он повторяется с AREA.FKID_MENU).

В остальном, это описано в документации Hibernate о двунаправленных сопоставлениях «один к одному» :

<class name="Area">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
    <many-to-one name="menu" 
        column="FKID_MENU" 
        unique="true"
        not-null="false"/>
</class>

<class name="Menu">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
   <one-to-one name="area" 
        property-ref="menu"/>
</class>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...