Foros del Web » Programación para mayores de 30 ;) » Java »

Many-to-many con Hibernate

Estas en el tema de Many-to-many con Hibernate en el foro de Java en Foros del Web. Hola ¿Como se hace en una relación many-to-many de hibernate para ponerle propiedades(campos) a la relación? Sólo consigo tener los ids de las tablas que ...
  #1 (permalink)  
Antiguo 20/08/2008, 02:12
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Many-to-many con Hibernate

Hola
¿Como se hace en una relación many-to-many de hibernate para ponerle propiedades(campos) a la relación? Sólo consigo tener los ids de las tablas que se relacionan, pero quiero añadir a esa N:M una fecha y no sé.
Un saludo
  #2 (permalink)  
Antiguo 20/08/2008, 03:36
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Many-to-many con Hibernate

Desde un punto de vista de modelo de datos, una N:M con atributos no es una N:M, es una 1:N y una N:1 con una entidad propia en medio.

Me suena algo de que Hibernate te dejara igualmente, pero en el manual no veo nada asi que debe ser un caso raro . Yo siempre los trato como dos 1:N.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 20/08/2008, 03:45
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Many-to-many con Hibernate

La verdad es que había pensado como tu, de tratarla como dos 1:N, pero como estoy empezando con hibernate, pensé que igual había forma de mapear esos atributos en la many-to-many. Gracias GreenEyed
Un saludo
  #4 (permalink)  
Antiguo 20/08/2008, 08:40
Avatar de diegoy2k  
Fecha de Ingreso: julio-2006
Ubicación: Algun Lugar
Mensajes: 68
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Many-to-many con Hibernate

Hola!
Mira estuve haciendo un trabajo con hibernate, en el cual en un momento me tope con una N:M, y tuve problemas, este trabajo era de indole academico, por lo que decidi consultar a mi profesor sobre este problema, la respuesta que él me dio fue "ese es uno de los puntos debiles de hibernate, trata de desarmar la relacion, organiza los datos de otra manera".
  #5 (permalink)  
Antiguo 20/08/2008, 10:13
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Many-to-many con Hibernate

Cita:
Iniciado por GreenEyed Ver Mensaje
Desde un punto de vista de modelo de datos, una N:M con atributos no es una N:M, es una 1:N y una N:1 con una entidad propia en medio.
Exacto,

Una la tratas como 1:N y la otra N:1,

Este post te ayudaria mucho:

http://www.forosdelweb.com/f45/hibernate-609209/

saludos!
  #6 (permalink)  
Antiguo 21/08/2008, 00:46
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Many-to-many con Hibernate

Hay una cosa del post que no me convence, a ver si me la podeis explicar. Yo probé a hacer una relación N:M con hibernate, en la que sólo tengo la clave primaria de las dos entidades que relaciono, eso me lo hace bien. En el post cuando haceis eso, nombrais dos tablas diferentes en cada entidad, una "materia_alumno" y otra "alumno_materia", por que? No se supone que debe ser la misma tabla, con los dos ids?
Por otra parte, en relación a mi duda principal, y tomando como ejemplo el post, entiendo que yo tendría que hacer mi relación N:M (materia_alumno) como una entidad (poniendo todas las propiedades que quiera, ese era el problema) y luego relacionar Alumno con materia_alumno y Materia con materia_alumno, es así?
  #7 (permalink)  
Antiguo 21/08/2008, 03:44
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Many-to-many con Hibernate

En realidad es una sola tabla, me da que fue un error de transcripción.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #8 (permalink)  
Antiguo 21/08/2008, 07:58
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Many-to-many con Hibernate

Cita:
Iniciado por GreenEyed Ver Mensaje
En realidad es una sola tabla, me da que fue un error de transcripción.

S!

Si, fue un error de dedo, una disculpa,

En tu tabla intermedia solo vas a tener como columnas los ids de cada tabla, en el ejemplo la tabla es materia_alumno y tiene como columnas idMateria e idAlumno
y las otras dos tablas que son Alumno y Materia, cada una va tener sus propias columnas.

saludos!
  #9 (permalink)  
Antiguo 22/08/2008, 00:15
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Many-to-many con Hibernate

Ok. Gracias!
  #10 (permalink)  
Antiguo 14/11/2012, 21:24
 
Fecha de Ingreso: noviembre-2012
Ubicación: Argentina
Mensajes: 5
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Many-to-many con Hibernate

Buenas Tardes, estoy teniendo un problema bastante especifico.
Les comento a ver si alguien me puede ayudar con esto.

Tengo 3 tablas: Tabla Cliente, Tabla direccion y una tabla de referencia "client_address" que solo tiene 2 campos (IDCliente y IDDireccion)
(la relacion es many to many)

EN uno de los HBM, las mismas estan configuradas asi:
<set name="addresses" table="client_address" lazy="true" cascade="all-delete-orphan" inverse="true" >
<key column="id_client"/>
<many-to-many class="com.asofarma.fm.fe.model.Direccion" column="id_address"/>
</set>

ESTE CODIGO XML LO QUE HACE ES AL HACER UN SAVE DEL OBJETO ES CREAR:
• 1 registro en client_address(tabla intermedia)
• 1 registro en Address(en la tabla maestrs)

Aquí me surge el problema de que a veces en la pantalla necesito realizar una creacion de tabla maestra + tabla de referencia(asociacion) y a veces no, ya que los datos en la maestra ya existian, y solamente tengo que hacer la asociacion(insert en la tabla de referencia)

Tal cual como esta el XML, hibernete me esta insertando 2 registros en los 2 casos:
1 registro en la tabla maestra
1 registro en la tabla de referencia (asociacion el registro creado recientemente)

CASOS:
Tengo casos en los que le CREO "UN DOMICILIO" a un cliente.Al ser un nuevo domicilio estaria bien que se cree un nuevo registro en domicilio y luego otro nuevo registro en la tabla de referencia asociando el domicilio con el cliente.
Tengo otro caso que EL DOMICILIO ya existe, y solamente se lo selecciono al cliente, por lo tanto en la tabla domicilio este ya existe, debiendo solamente registrar la asociacion en la tabla de referencia. (ESTE ULTIMO ES EL QUE NO PUEDO SOLUCIONAR)

Por favor, agradezco alguna orientacion y/o comentarios.

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:00.