2009-09-25 34 views
8

Tengo clases de entidad A y C. Están mapeando las tablas tblA y tblC y tienen una relación de muchos a muchos entre ellas, con tblB para mapear entre ellas. tblB contiene A_ID, C_ID y SetDate, siendo la última la fecha en que se estableció, por lo tanto un atributo para la relación. Mi pregunta es, ¿cuál es el mejor mapa de este atributo? Por el momento están sin asignar, como esto:Atributos en relaciones Muchos a Muchos (Hibernar)

A:

@ManyToMany(targetEntity=C.class, cascade={ CascadeType.PERSIST, CascadeType.MERGE }) 
@JoinTable(name="tblB", [email protected](name="A_ID"), [email protected](name="C_ID")) 
private Collection<C> Cs; 

C:

@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "Cs", targetEntity = A.class) 
private Collection<A> As; 

¿Cómo debo tblB.SetDate salir de esto?

Saludos

Nik

+0

+1 pregunta interesante – KLE

Respuesta

10

Por lo que sé, es imposible para asignarlo de esta manera, tiene que cambiar a One-To-Many y muchas relaciones uno a uno, con su B en el medio. Su fecha será un atributo de B.


Por esta falta de evolutividad, la documentación de Hibernate recomienda evitar los muchos-a-muchos, en general, y el uso de las dos relaciones desde el principio.

+1

Hola, gracias por tu aporte. Evitar muchos a muchos mientras se mantiene la cantidad de clases de entidades inactivas no siempre es posible cuando se mapean bases de datos heredadas como lo estoy haciendo ahora. – niklassaers

+0

Debo lidiar con las cosas de la base de datos heredada también! También comparto su deseo de mantener el número de clases. Sin embargo, en ese caso, si necesita un campo adicional, no estoy seguro de que tenga otras opciones ... – KLE

3
+0

Por supuesto que podría agregar una nueva entidad, con la mayor cantidad de código, pero me gustaría mantener el nivel del código bajo. Prefiero simplemente agregar un atributo a la relación si hay alguna forma de hacerlo – niklassaers

+0

@niklassaers Creo que no hay otra forma, pero si la obtienes, compártelo con nosotros. Saludos, –

+0

Gracias Arthur, lo haré. :-) – niklassaers

Cuestiones relacionadas