Отношение многие ко многим с атрибутами: как? - PullRequest
1 голос
/ 12 февраля 2010

Простите за мой плохой английский заранее, так как это не мой родной язык.
Как в этом примере: http://www.xylax.net/hibernate/manytomany.html


Но у меня в таблице есть 2 атрибута foo-bar, которые не являются частью первичных или внешних ключей: одна логическая (A) и одна строка (B). Я знаю, как отобразить это без атрибутов, но не в этом случае.

Я не нашел ответа в документации.

Мне нужно знать, пожалуйста, как отобразить это и какую коллекцию я должен объявить в моем классе Foo.

Заранее спасибо за ваш ответ.

Я очень ценю ваше время.

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Цитируя У меня есть связь «многие ко многим» между двумя таблицами, но в таблице ассоциации есть несколько дополнительных столбцов (кроме внешних ключей). Какое отображение я должен использовать? запись в FAQ пользователей Hibernate:

Используйте составной элемент для моделирования таблица ассоциации. Например, учитывая следующая таблица ассоциаций:

create table relationship ( 
    fk_of_foo bigint not null, 
    fk_of_bar bigint not null, 
    multiplicity smallint, 
    created date )

Вы можете использовать это отображение коллекции (внутри отображения для класса Foo):

<set name="relationship">
    <key column="fk_of_foo"/>
    <composite-element class="Relationship">
        <property name="multiplicity" type="short" not-null="true"/>
        <property name="created" type="date" not-null="true"/>
        <many-to-one name="bar" class="Bar" not-null="true"/>
    </composite-element>
</set>

Вы также можете использовать <idbag> с столбец суррогатного ключа для Стол для сбора. Это позволит вам иметь обнуляемые столбцы.

Альтернативный подход состоит в том, чтобы просто сопоставить таблицу ассоциации как нормальную класс сущности с двумя двунаправленными ассоциации один ко многим.

1 голос
/ 12 февраля 2010

Полагаю, вам нужно создать третий класс для хранения этих атрибутов

...