Свободное автоматическое сопоставление NHibernate - как создать таблицу отношений «многие ко многим»? - PullRequest
1 голос
/ 26 октября 2009

просто интересно, кто-нибудь знает, есть ли способ автоматически создать таблицу отношений «многие ко многим» с использованием какого-либо атрибута? без создания таблицы или сопоставления класса с таблицей отношений.

Если я добавляю атрибут [ManyToMany (3, Class = "DeploymentListUsers")], я получаю сообщение об ошибке, что этот класс не сопоставлен с БД.

NHibernate.MappingException: An ассоциация из таблицы пользователей относится к несопоставленному классу:

Я не хочу ни сам определять класс, ни создавать таблицу в БД заранее.

это кажется возможным в JAVA, свободно ли NHibernate является полностью реализованной версией аннотаций hibernate и JPA?

http://www.hiberbook.com/HiberBookWeb/learn.jsp?tutorial=19mappingmanytomanyrelationships

Спасибо, Итай

Ответы [ 3 ]

0 голосов
/ 05 декабря 2011

NHibernate теперь поддерживает JPA (называемый NPersistence или NPA для платформы .NET), включая аннотации JPA. Это лучший способ указать отношения и сделать ваш код переносимым также для других поставщиков. проверить это: www.npersistence.com

0 голосов
/ 30 августа 2012

Мой ответ на похожий вопрос может вам помочь: https://stackoverflow.com/a/12198533/185200

Я закончил тем, что расширил шаг автоматического преобразования многих ко многим, чтобы поддерживать свойства, украшенные пользовательским атрибутом.

0 голосов
/ 27 ноября 2009

Если вы указываете класс, вы должны убедиться, что он тоже существует. NHibernate не создаст класс для вас. Однако, если ваша таблица «многие ко многим» содержит только внешний ключ к вашей таблице развертываний и внешний ключ к вашей таблице пользователей, такой класс вам не понадобится. Вам понадобится отдельный класс сопоставления «многие ко многим», только если вы хотите сохранить дополнительные факты об отношении.

Насколько я могу судить, в вашей ситуации вам просто нужно создать таблицу "многие ко многим" (вы могли бы использовать SchemaExport () NHibernate для генерации оператора CREATE TABLE, чтобы там была некоторая автоматизация) и сказать NHibernate, как карта к нему. В отличие от вас, я не использую атрибуты сопоставления, поэтому не знаю, как сделать сопоставление, используя их, но, вероятно, это очень просто.

...