2015-11-25 3 views
0

Я начал создавать 2 классов для моих 2 лиц:JPA/Как добавить свойство в ManyToMany отношении

  • пользователя: Пользователь может принадлежать несколько Группе
  • Group: а Группа может рассчитывать несколько пользовательских (участников)

соотношение между этими 2 субъектами должны быть двунаправленными .

JPA затем создаст новый объект отношения с именем User-Group. В этой таблице/сущности мы найдем User PK и группу PK вместе.

Моя проблема: Каждый пользователь в группе должен иметь «роль». Роль по умолчанию - «член», но Пользователь также может быть «лидером».

Свойство «role» не существует ни в одном из моих классов и должно быть связано с парой «User PK/Group PK» таблицы отношений User-Group, созданной JPA.

Как я могу обработать свойство role, поскольку это не свойство пользователя, не свойство Group, а свойство User-Group? Как добавить этот столбец в таблицу User-Group, которая является созданием JPA?

Thanx для вашей помощи.

+0

Если он не существует в ваших классах, он не может быть сохранен. Поэтому правильно настройте свою модель для ВКЛЮЧЕНИЯ дополнительного поля (например, для класса UserGroup), а THEN определите его сопоставления (1-N User to UserGroup, 1-N Group to UserGroup). Это достаточно документально, если вы только просматриваете этот сайт по другим вопросам –

+0

Thanx много @Neil. Вы уверены, что я прав, мне нужно создать эту сущность и ее отношения с USER и GROUP. Я нашел здесь несколько сообщений, но они не описали точно, что мне нужно. Сначала я подумал, что можно использовать таблицу отношений, созданную JPA, чтобы добавить одно свойство с именем «Роль», но я понимаю, что использовать такие таблицы невозможно.Новый объект должен быть явно создан. Имейте приятный день и спасибо за ваше время. – Lovegiver

ответ

0

Самый простой способ состоит в том, чтобы разделить отношения «многие-ко-многим» в двух отношениях «один-ко-многим» к новому объекту: вы создаете класс UserRoleInAGroup, содержащий поле роли, группу и пользователя.

2 результирующие One-To-Many отношения:

  • первый:
    • Каждый пользователь может быть связан со многими UserRoleInAGroup
    • Каждый UserRoleInAGroup относится к одному пользователя
  • 2-й:
    • Каждая группа может быть связана со многими UserRoleInAGroup
    • Каждый UserRoleInAGroup относится к одной группе

Я надеюсь, что это помогает.

+0

Да Thanx много !! – Lovegiver

Смежные вопросы