Какие теги Hibernate (или NHiberate) и/или классы сопоставления следует использовать для создания сопоставлений с таблицей мостов, называемой контрактом?

Допустим, у меня есть мостовая таблица с более чем двумя внешними ключами, составляющими составной ключ.

Например,

Правительственная таблица gov_id int первичный ключ cournty_name String

Таблица NonProfitOrg nonProfit_id int первичный ключ NonProfit_name String

Таблица CommericalFirm Commercial_id int первичный ключ commerical_name Строка

( промежуточная таблица, называемая контрактом ) Контракт gov_id nonProfit_id коммерческий_id

Какие теги Hibernate (или NHiberate) или классы сопоставления следует использовать для создания сопоставлений с таблицей-мостом, называемой контрактом?
Должен ли я создавать отдельный класс сопоставления для таблицы-мост, называемой контрактом? Или Можем ли мы сделать это с помощью тега «многие ко многим» в таблице отображения правительства, таблице NonProfitOrg и таблице CommericalFirm? Подскажите, пожалуйста, лучший подход.


person user1338998    schedule 23.03.2013    source источник


Ответы (1)


Поскольку в таблице контрактов у вас есть функциональные данные, а не только внешние ключи к связанным сущностям, вам необходимо сопоставить их как сущность.

Таким образом, у вас будет OneToMany между правительством и контрактом и еще один OneToMany между NonProfitOrg и контрактом.

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

person JB Nizet    schedule 23.03.2013
comment
Кроме того, будет ли у меня также OneToMany между CommericalFirm и Contract? - person user1338998; 23.03.2013
comment
Да, у вас бы тоже была эта ассоциация. - person JB Nizet; 23.03.2013
comment
У него действительно есть функциональные данные в таблице контрактов? Я не вижу, чтобы он упомянул кого-либо. Он также мог бы использовать много-к-маю между правительством-некоммерческой организацией и правительством-коммерческой фирмой. - person Nikola Radosavljević; 23.03.2013
comment
Да, так как есть дополнительный столбец Commercial_id, представляющий Commercial. Если бы у него было два ManyToMany, у него было бы две таблицы соединения. - person JB Nizet; 23.03.2013