Hibernate bidireccional muchos a muchos consejos mapeo!
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 ...
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
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).