Pregunta

i woundered si alguien podría ser capaz de ayudarme. Estoy tratando de trabajar en lo que a Google por (o cualquier otra idea !!) básicamente tengo un bidireccional muchos a muchos mapeo entre una entidad de usuario y una entidad del club (a través de una tabla de unión llamado userClubs) ahora quiero incluir una columna en userClubs que representa el papel de manera que cuando llamo user.getClubs () también puedo averiguar qué nivel de acceso que tienen. ¿Hay una manera inteligente de hacer esto utilizando hibernación o tengo que replantear la estructura de base de datos? Gracias por cualquier ayuda (o simplemente por leer hasta aquí !!)

la user.hbm.xml parece un poco a

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

La tabla userClubs actual contiene los campos Identificación | user_ID | activity_ID

Me gustaría incluir en ese país Identificación | user_ID | activity_ID | papel

y ser capaz de acceder a la función en ambos lados ...

¿Fue útil?

Solución

La forma más sencilla sería la creación de una entidad fuera de la tabla de unión.

podría utilizar las dos claves externas a las entidades del club y de los usuarios como el id (usando ), pero yo aconsejaría añadir una columna Identificación del técnico, y acaba de establecer una restricción única en las claves externas (de lo contrario , la cascada que cuando excepto club o usuario no funcionará más información aquí:. http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-compositeid ).

Si el nombre de su nueva entidad UserClub, se necesitaría un uno-a-muchos de usuario a UserClub y desde el Club de UserClub, y muchos-a-uno de UserClub al Club y de UserClub al usuario.

tendrá algún refactorización que hacer en el código de Java, pero no tendrá que cambiar la db (aparte de la adición de las columnas ID y papel).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top