Open GoogleCodeExporter opened 8 years ago
Además creo que estas operaciones deberían ir en DatabaseNormalization o en
YuppConventions.
Original comment by pablo.swp@gmail.com
on 15 Apr 2012 at 7:11
Parece que antes codificaba el nombre de la relacion dentro de PO, pero ahora
como los hasMany de distintas relaciones se ponen en distintas tablas, esto no
es necesario, alcanza con que el nombre del rol de la relación con la clase B
sea distinto.
Y parece que todas las operaciones que antes trataban de obtener el nombre del
atributo en la clase a partir del rol, no son necesarias y ahora todo se puede
hacer solo con el nombre del atributo que está declarado en A.
Original comment by pablo.swp@gmail.com
on 15 Apr 2012 at 6:47
Revisar si el método attributesOfSameRelationship es necesario porque utiliza
la misma notación de relación que las operaciones que saqué de PO
getAssocRoleName y getFullAttributename, y parece que tampoco sirve para nada.
Ver quien la usa y para qué.
Original comment by pablo.swp@gmail.com
on 15 Apr 2012 at 9:51
Antes de seguir sacando operaciones, verificar casos de bidireccionalidad 1-* y
*-*.
Original comment by pablo.swp@gmail.com
on 15 Apr 2012 at 9:59
En bidireccional 1-* parece que no se usa eso del rol en la relación para
diferenciar a qué relación pertenece un atributo.
Creo que se usaba para relacionar clases en relaciones bidireccionales cuando
se cargaban de la base, que si había 2 relaciones declaradas con la misma
clase, no haya ambigüedad y se supiera en qué relación cargar la instancia
relacionada.
El tema es que ahora para relaciones x-* para la misma clase hay tablas
distintas para cada relación, eso alcanza para diferenciar las relaciones.
Además cada una de las tablas intermedias guarda si la relación es
unidireccional o bidireccional.
Original comment by pablo.swp@gmail.com
on 16 Apr 2012 at 12:37
Hay un problema con obtener el nombre de la tabla de relacion en *-* desde el
child si el owner tiene 2 relaciones hasMany hacia la misma clase child.
Lo que pasa es que las operaciones de PO que manejan eso, se basan en que el
programador va a declarar el atributo con el nombre de la relación separado
por "__" del rol de la relación, así se puede saber de ambos lados de la
relación que los roles pertenecen a la misma relación.
Esa codificación debería hacerse de forma interna, no dejarla al usuario. Y
hay que corregir las funciones que manejaban eso en PO para que lo sigan
haciendo, considerando que en los casos donde no se declare el nombre de la
relación en estos casos ambiguos, se lanzará una excepción informando del
hecho. Hoy el método PO.getHasManyAttributeNameByAssocAttribute sino encuentra
el attr para la misma relación en la clase relacionada, tira NULL y nadie se
entera del problema!!!
Además se debería garantizar que si tengo un modelo con más de una relación
bidireccional entre las mismas clases, algo como
A(a1__ab1,a2__ab2)<->(b1__ab1,b2_ab2)*B, SI a1->(b1,b2), ENTONCES se debería
cumplir que b1->a1 y b2->a1.
Ver que los roles a1 y b1 están en la misma relación ab1.
O sea: garantizar los backlinks.
Original comment by pablo.swp@gmail.com
on 16 Apr 2012 at 7:44
Original issue reported on code.google.com by
pablo.swp@gmail.com
on 15 Apr 2012 at 7:09