Mise en veille prolongée Bidirectionnelle plusieurs à plusieurs conseils de cartographie!

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

  •  02-10-2019
  •  | 
  •  

Question

i woundered si quelqu'un pourrait être en mesure de me aider. Je suis en train de travailler sur quoi Google pour (ou d'autres idées !!) En fait, j'ai beaucoup bidirectionnel à plusieurs entre une entité d'utilisateur et une entité club (via une jointure table appelée userClubs) Je veux maintenant inclure une colonne dans userClubs qui représente le rôle de sorte que lorsque j'appelle user.getClubs () Je peux aussi travailler à ce que l'accès au niveau qu'ils ont. Y at-il une façon intelligente de le faire à l'aide mise en veille prolongée ou ai-je besoin de repenser la structure de base de données? Merci pour toute aide (ou juste pour la lecture de ce bien !!)

user.hbm.xml ressemble un peu à

<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>

la partie activity.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>

Le tableau en cours de userClubs contient les champs id | user_ID | activity_id

Je voudrais inclure là-dedans id | user_ID | activity_id | rôle

et être en mesure d'accéder au rôle des deux côtés ...

Était-ce utile?

La solution

La façon la plus simple serait de créer une entité de la table de jointure.

vous pouvez utiliser les deux clés étrangères aux entités du club et l'utilisateur comme l'ID (en utilisant ), mais je vous conseille d'ajouter une colonne identifiant technique, et juste définir une contrainte unique sur les clés étrangères (autrement , la cascade lorsque vous enregistrez club ou utilisateur ne fonctionnera pas plus d'informations ici. http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-compositeid ).

Si vous nommez votre nouvelle entité UserClub, vous auriez besoin d'un à plusieurs d'un utilisateur à UserClub et du Club à UserClub, et beaucoup à l'un de UserClub Club et de UserClub à l'utilisateur.

Vous aurez refactoring à faire sur le code java, mais vous ne serez pas à changer le db (à l'exception de l'ajout des colonnes id et rôle).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top