Mise en veille prolongée Bidirectionnelle plusieurs à plusieurs conseils de cartographie!
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 ...
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
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).