почему hibernate генерирует дополнительные сущности при отображении отношения «многие ко многим»? - PullRequest
4 голосов
/ 12 ноября 2011

Я делаю приложение в настоящее время, и я начал с создания схемы БД, которая выглядит следующим образом:

Database schema

Есть несколько таблиц (users_groups_maps, article_tags_maps reports_articles), favourite_articles и browse_later_articles), которые представляют выпуск «многие ко многим».Я создал файл обратной конфигурации и начал осуществлять обратный инжиниринг, чтобы из него можно было извлечь классы Java (аннотации, JDK 5 и EJB3, что приводит к javax.persistence. * Аннотации).

Основные таблицы (такие как предупреждения, пользователи) просто отлично (есть такие поля, как

private Set<BrowseLaterArticles> browseLaterArticleses = new HashSet<BrowseLaterArticles>(0);

, но я думаю, что это нормально - я новичок в спящем режиме).

Однако проблема(Я полагаю) начинается с этих отношений «многие ко многим» (например, конструктор UserGroupsMaps выглядит следующим образом:

public UsersGroupsMaps(UsersGroupsMapsId id, Users users, Groups groups) {
    this.id = id;
    this.users = users;
    this.groups = groups;
}

, где UserGroupsMapsId - это оболочка для пары userId и groupId)

AmЯ понял что-то не так или это должно быть по-другому?Я знаю, что есть аннотация ManyToMany, почему она не используется в спящем режиме?

// Кроме того, у меня есть вопрос, не относящийся к спящему режиму - в комментариях и private_messages таблиц, есть те поля parent__id, которые должны ссылаться на те же таблицы.Я создал внешние ключи для своих собственных таблиц, но я не уверен, правильно ли это, не так ли?Как это должно выглядеть?В этом случае hibernate создает два поля с одинаковыми именами: private Комментарии comments; в классе комментариев.

С уважением, Marcin

Ответы [ 2 ]

0 голосов
/ 06 мая 2015

чтобы "hibernate tools" / "Jboss tools" генерировали много-много аннотаций в ваших классах компонентов, вы должны использовать простые таблицы сопоставления. Эти таблицы сопоставления должны иметь только столбцы для обоих внешних ключей, которые должны быть объединенным первичным ключом.

0 голосов
/ 12 ноября 2011

Ваше отображение гибернации где-то запутано.Hibernate дает возможность не создавать объекты для объединяемых объектов «многие ко многим», если в этой таблице нет дополнительных столбцов.Я полагаю, вы используете плагин Eclipse Hibernate?Я бы проверил настройки генератора кода, чтобы убедиться, что вы можете запретить ему создавать этот объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...