Dilema en relacion muchos-a-muchos

Tengo un problema con mi proyecto de desarrollar una API en base a entidades cuando es el caso de Muchos a Muchos y hay datos extra.

Caso bien:

Código:

<class name="Project"><relations><relation name="tags" type="XX" entity="Tag" /></relations></class>POST /projects/1/tags/2# project_tag# ----------# project_id# tag_id
En la siguiente relación, en el tag relation se agrega automáticamente el mapper "ProjectVote", en el POST están especificadas las 2 entidades y su ID, no hay datos extra y se guarda sin grandes complicaciones. Cuando se hace un GET tampoco hay muchos problemas, se sabe que Project va a tener un array de la entidad "Tag" llamado tags.

Caso problemático, quizá la solución sea agregar nuevos atributos al tag relation, pero si se puede mantener mas simple, mejor. Lo otro que me gusta aun menos es olvidarse de la relacion M2M y que pase a ser de O2M.

Código:

<class name="User"><relations><relation name="group" type="XX" entity="Group" /></relations></class>POST /users/1/groups/2Content-Type: application/json{ "role_id": 1 }# user_group# ----------# user_id# group_id# role_id
Guardar no tiene problemas, ya que se podría agregar todo lo que venga en el body a lo que se guarda. El problema está al leer, si se sigue usando Group como entidad relacionada (tabla group), se van a perder los datos que se guardaron en user_group.

Se me ocurre que se puede crear una entidad Membership que reemplace a UserGroup, que sea un join con Group, entonces ahí se podrá traer todos los datos de la DB e insertarlos en una entidad que acepte todos esos datos. Si trajera solo Group, el dato role_id se perdería.
Publicado por:
ignatius
Foro
Temas técnicos