Bonjour,
Je voudrais savoir jusqu'où il est possible d'ajouter des attributs à une many to many? Je m'explique :
Supposons que l'on ait une table Users et une table Games. Un joueur peut jouer à plusieurs parties, et une partie a plusieurs joueurs. C'est donc un cas classique de many-to-many. Je l'ai réprésenté ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <class name="User" table="Users"> (...) <set name="games" table="UserGames"> <key column="userId"/> <many-to-many class="Game" column="gameId"/> </set> </class> <class name="Game" table="Games"> (...) <set name="users" table="UserGames" inverse="true"> <key column="gameId"/> <many-to-many class="User" column="userId"/> </set> </class>
Maintenant, j'ai envie de rajouter un champ statut lié à l'utilisateur et à une partie. Mais j'ai envie de garder mes relations users et games. Comment faire?
- Créer explicitement la table UserGames via fichier .hbm.xml ? Je suppose que oui. Que mettre dans cette table? Un composite id (déconseillé dans la litérature)?
- Remplacer les many-to-many par des one-to-many? Mais alors je perds mes relations...
Une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <class name="UserGames" table="UserGames"> <id name="id" column="id"> <generator class="native"/> </id> <property name="status"/> <many-to-one name="user" column="userId" class="User"/> <many-to-one name="game" column="gameId" class="Game"/> </class>
Partager