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

È stato utile?

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 ), ma vorrei consigliare l'aggiunta di una colonna di tecnica id, e solo impostare un vincolo univoco sulle chiavi esterne (in caso contrario , la cascata quando Salva Club o l'utente non funziona maggiori informazioni qui:. http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-compositeid ).

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top