Hibernate bidirezionale molti a molti consigli mappatura!
Domanda
i woundered se qualcuno potrebbe essere in grado di darmi una mano. Sto cercando di capire cosa Google per (o altre idee !!) Fondamentalmente ho una relazione molti a molti bidirezionale mapping tra un'entità utente e un'entità club (tramite un join tabella chiamata userClubs) Ora voglio includere una colonna in userClubs che rappresenta il ruolo in modo che quando chiamo user.getClubs () posso anche capire qual è il livello di accesso che hanno. C'è un modo intelligente per fare questo usando Hibernate o devo ripensare la struttura del database? Grazie per tutto l'aiuto (o solo per aver letto fino a questo punto !!)
l'User.hbm.xml sembra un po 'come
<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 parte 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>
L'attuale tabella di userClubs contiene i campi id | ID_utente | activity_ID
mi piacerebbe includere in là id | ID_utente | activity_ID | ruolo
ed essere in grado di accedere al ruolo su entrambi i lati ...
Soluzione
Il modo più semplice sarebbe quella di creare un soggetto fuori dalla tabella di join.
è possibile utilizzare le due chiavi esterne alle entità del club e degli utenti, come l'id (usando
Se il nome del tuo nuovo soggetto UserClub, si avrebbe bisogno di un uno-a-molti da utente a UserClub e da club a UserClub, e molti-a-uno da UserClub Club e da UserClub a Utente.
Si avrà qualche refactoring da fare sul codice Java, ma non dovrà cambiare il db (a parte l'aggiunta di colonne id e di ruolo).