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

Mapear tabla Hibernate.

Estas en el tema de Mapear tabla Hibernate. en el foro de Java en Foros del Web. Hola, llevo toda la tarde intentando mapear una tabla de MySQL, es la primera vez que me topo con dos claves uno-a-uno en una misma ...
  #1 (permalink)  
Antiguo 29/06/2009, 15:09
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Pregunta Mapear tabla Hibernate.

Hola, llevo toda la tarde intentando mapear una tabla de MySQL, es la primera vez que me topo con dos claves uno-a-uno en una misma tabla y no logro resolver como mapearla.

tengo dos tablas, una llamada "usuarios" con "id" como primary key, otra llamada articulos con su "id" como primary key.

Y despues tengo otra tabla, llamada usuario_articulo que tiene simplemente dos columnas, una "id_usuario" y otra "id_articulo", ninguna es primary key, ¿como se mapearia esto en el hbm.xml?, y otra duda ya de paso, si ambas fueran primary key, ¿que cambiaria?.

Muchas gracias por la ayuda.
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #2 (permalink)  
Antiguo 29/06/2009, 15:57
 
Fecha de Ingreso: agosto-2008
Ubicación: Cajamarca
Mensajes: 49
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Mapear tabla Hibernate.

You have to use composite ids :
http://docs.jboss.org/hibernate/stab...on-compositeid
  #3 (permalink)  
Antiguo 30/06/2009, 02:01
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Mapear tabla Hibernate.

Cita:
Iniciado por Cimballi Ver Mensaje
Si, si, lo he estado mirando, pero no me sirve..., ya que mis claves externas son uno-a-uno, no simples ni muchas-a-uno...

Ando perdidisimo con esto...
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #4 (permalink)  
Antiguo 30/06/2009, 02:21
 
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Mapear tabla Hibernate.

Hola!
Nose si te servira esto, te lo explico con un ejemplo q creo qu es mas claro:
tenemos 2 clases Prueba y Jugador, relacionadas 1-1.
Prueba
long idprueba
Jugador jugador;
Jugador
long jugador
Prueba prueba

<class name="Prueba" table="PruebaTabla">
<id name="idPrueba" colum="IDPRUEBA"> <generator class="increment"/></id>
<one-to-one name="jugador" class="Jugador"/>
</class>

<class name="Jugador" table="JugadorTabla">
<id name="idJugador" colum="IDJUGADOR">
<generator class="foreign">
<param name="property">prueba</param>
</generator>
</id>
<one-to-one name="prueba" class="Prueba" contrained="true"/>
</class>

Espero que te haya servido de ayuda.
  #5 (permalink)  
Antiguo 30/06/2009, 02:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Mapear tabla Hibernate.

Si tienes esa estructura de tablas, en realidad lo que tienes es una N-M, ambos campos deberían conformar la clave primaria en la tabla, y por lo tanto representarlo en Hibernate por una relación many-to-many.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #6 (permalink)  
Antiguo 30/06/2009, 08:45
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Mapear tabla Hibernate.

Cita:
Iniciado por lissette22 Ver Mensaje
Hola!
Nose si te servira esto, te lo explico con un ejemplo q creo qu es mas claro:
tenemos 2 clases Prueba y Jugador, relacionadas 1-1.
Prueba
long idprueba
Jugador jugador;
Jugador
long jugador
Prueba prueba

<class name="Prueba" table="PruebaTabla">
<id name="idPrueba" colum="IDPRUEBA"> <generator class="increment"/></id>
<one-to-one name="jugador" class="Jugador"/>
</class>

<class name="Jugador" table="JugadorTabla">
<id name="idJugador" colum="IDJUGADOR">
<generator class="foreign">
<param name="property">prueba</param>
</generator>
</id>
<one-to-one name="prueba" class="Prueba" contrained="true"/>
</class>

Espero que te haya servido de ayuda.
Muchas gracias compañero, aunque no te lo creas, me aclara bastante.

Cita:
Iniciado por GreenEyed Ver Mensaje
Si tienes esa estructura de tablas, en realidad lo que tienes es una N-M, ambos campos deberían conformar la clave primaria en la tabla, y por lo tanto representarlo en Hibernate por una relación many-to-many.

S!
Si, correcto, en lo que ha hecho el compañero ambas tablas estaban relacionadas la una con la otra en una relacion muchos-a-muchos.

Voy a ponerme y os pongo aqui lo que saque, a ver si es correcto.
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #7 (permalink)  
Antiguo 30/06/2009, 09:04
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Mapear tabla Hibernate.

UNA TABLA
<hibernate-mapping>
<class name="com.pruebashiber.utils.objetos.Usuario" table="users">
<id column="user_id" name="user_id" type="integer">
<generator class="native"/>
</id>
<property column="user_active" name="user_active" type="integer"/>
<property column="username" name="username" not-null="true" type="string"/>
...
</class>
</hibernate-mapping>

OTRA TABLA
<hibernate-mapping>
<class name="com.pruebashiber.utils.objetos.Objetos" table="rc_Objetos">
<id column="id" name="id" type="integer">
<generator class="native"/>
</id>
<property column="nombre" name="nombre" not-null="true" type="string"/>
<property column="fecha_creacion" name="fechaCreacion" not-null="true" type="date"/>
...
</class>
</hibernate-mapping>

TABLA CON DOS COLUMNAS RELACIONADAS 1A1 CON LAS OTRAS DOS.
<hibernate-mapping>
<class name="com.pruebashiber.utils.objetos.UsuarioObjeto s" table="rc_usuario_objetos">
<one-to-one name="idUsuario" class="com.pruebashiber.utils.objetos.Usuario"/>
<one-to-one name="idObjetos" class="com.pruebashiber.utils.objetos.Objetos"/>
<property column="n_preguntas" name="nPregunta" not-null="true" type="integer"/>
</class>
</hibernate-mapping>

¿Asi es correcto?

PD: Bueno, errores me da, asi que no sera correcto... xD
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.

Última edición por MiLLeN; 30/06/2009 a las 09:33
  #8 (permalink)  
Antiguo 06/07/2009, 02:26
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Pregunta Respuesta: Mapear tabla Hibernate.

Nada, sigo sin hacer que funcione, ¡¡¡¡¡¡¡que barbaridad!!!!!!!

Lo ultimo que he intentado ha sido esto:
Código:
<hibernate-mapping>
  <class name="com.pruebashiber.utils.objetos.UsuarioObjetos" table="rc_usuario_objetos">
    <one-to-one name="idUsuario" class="com.pruebashiber.utils.objetos.Usuario" />
    <one-to-one name="idObjeto" class="com.pruebashiber.utils.objetos.Objetos" />
    <property column="n_preguntas" name="nPregunta" not-null="true" type="integer" />
  </class>
</hibernate-mapping>
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #9 (permalink)  
Antiguo 06/07/2009, 03:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Mapear tabla Hibernate.

Cita:
Iniciado por MiLLeN Ver Mensaje
Si, correcto, en lo que ha hecho el compañero ambas tablas estaban relacionadas la una con la otra en una relacion muchos-a-muchos.
one-to-one no es una relación muchos-a-muchos, es una relacion uno a uno.

Una relación muchos-a-muchos se representa, como ya he dicho, con una many-to-many, que es la que requiere una tabla intermedia.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #10 (permalink)  
Antiguo 06/07/2009, 04:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Mapear tabla Hibernate.

Cita:
Iniciado por GreenEyed Ver Mensaje
one-to-one no es una relación muchos-a-muchos, es una relacion uno a uno.

Una relación muchos-a-muchos se representa, como ya he dicho, con una many-to-many, que es la que requiere una tabla intermedia.

S!
Pero many-to-many es cuando muchos campos de una tabla estan relacionados con muchos campos de la otra y biceversa, y aqui no, aqui solo un campo de una tabla esta relacionado con la otra y biceversa...
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
  #11 (permalink)  
Antiguo 06/07/2009, 10:02
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Mapear tabla Hibernate.

La N-M es entre usuario y artículo, no entre usuario y usuario_artículo. usuario_artículo es una tabla auxiliar para representar la relación N-M entre usuarios y artículos, pero no es ninguna entidad ni se mapea en Hibernate a nada.

Igualmente, a nivel de tablas entre usuario y usuario_articulo no existe una relación uno a uno, es una 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.
  #12 (permalink)  
Antiguo 06/07/2009, 14:40
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Pregunta Respuesta: Mapear tabla Hibernate.

Cita:
Iniciado por GreenEyed Ver Mensaje
La N-M es entre usuario y artículo, no entre usuario y usuario_artículo. usuario_artículo es una tabla auxiliar para representar la relación N-M entre usuarios y artículos, pero no es ninguna entidad ni se mapea en Hibernate a nada.

Igualmente, a nivel de tablas entre usuario y usuario_articulo no existe una relación uno a uno, es una 1-N.

S!
Ostia pues si......... un usuario tiene varios objetos.... me estaba liando con que no pueden ser "repetidos"... es una N-M.

¿Pero si que tengo que mapearla en hibernate no?, porque ademas esta tabla incluye un nuevo campo para cada registro que es nPregunta, que no esta disponible ni en usuario ni en objetos... ¿La tendre que mapear para usarla desde Hibernate no?
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.
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 23:39.