Hibernate двунаправлена ​​Многие для многих совет!

StackOverflow https://stackoverflow.com/questions/2739207

  •  02-10-2019
  •  | 
  •  

Вопрос

Я ранил, если кто-то может быть в состоянии помочь мне. Я пытаюсь отработать, что Google для (или любых других идей !!) в основном у меня есть двунаправленная множество для многих сопоставлений между объектом пользователя и клубным объектом (через таблицу присоединения, называемых USERCLUBS), я сейчас хочу включить столбец В USERCLUBS, которые представляют роль, чтобы при звонке User.getClubs () Я также могу поработать, какой уровень доступа у них есть. Есть ли умный способ сделать это использовать Hibernate или мне нужно переосмыслить структуру базы данных? Спасибо за любую помощь (или просто для чтения этого далеко !!)

user.hbm.xml выглядит немного похоже

<set name="clubs" table="userClubs" cascade="save-update">
         <key column="user_ID"/>
         <many-to-many column="activity_ID"
           class="com.ActivityGB.client.domain.Activity"/>
</set>

Деятельность .hbm.xml Часть

<set name="members" inverse="true" table="userClubs" cascade="save-update">
        <key column="activity_ID"/>
        <many-to-many column="user_ID"
            class="com.ActivityGB.client.domain.User"/>
</set>

Текущая таблица UserClubs содержит поля ID | user_id |. Activity_id

Я хотел бы включить там ID | user_id |. Activity_id |. роль

И быть в состоянии получить доступ к роли с обеих сторон ...

Это было полезно?

Решение

Самым простым способом было бы создать сущность из таблицы присоединения.

Вы можете использовать два иностранных ключа в клуб и пользовательские объекты в качестве идентификатора (используяu003Ccomposite-id> ), но я бы посоветовал добавить столбцу Технический идентификатор и просто установил уникальное ограничение на внешние ключей (в противном случае, каскад при сохранении клуба или пользователя не будет работать. Больше информации здесь: http://docs.jboss.org/hibernate/core/3.3.3/reference/en/html/mapping.html#mapping-declaration-compositeId.).

Если вы назовите свой новый userclub userclub, вам понадобится один-ко многим от пользователя в UserClub и из Club в UserClub, и мною на один из UserClub в Club и от UserClub для пользователя.

У вас будет какое-либо рефакторинг, чтобы сделать в коде Java, но вам не придется изменить БД (кроме добавления столбцов ID и роли).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top