
Ahh por cierto las tablas son Telefono, Prospecto, ProspectoTelefono; los datos los obtengo de un archivo xml, gracias

| |||
Inserción por lotes en una relacion muchos a muchos con hibernate Hola compañeros ![]() Ahh por cierto las tablas son Telefono, Prospecto, ProspectoTelefono; los datos los obtengo de un archivo xml, gracias ![]() |
| |||
Respuesta: Inserción por lotes en una relacion muchos a muchos con hibernate Hola Y Como lo estas intentando hacer? Bueno, si hablas de una relacion de muchos a muchos estas hablando de dos entidades, no es asi? Pero tu mencionas que tienes 3, Telefono, Prospecto y ProspectoTelefono... Si lo que quieres es hacer una relacion por un lado entre Telefono y TelefonoProspecto y por otro lado entre Prospecto y ProspectoTelefono, entonces no se trata de una relacion muchos a muchos sino de dos relaciones uno a muchos. Para ello lo que tiens que hacer es lo siguiente: 1º Llena primero los atributos de la entidad Telefono Telefono t = new Telefono(llena los atributos); 2º Llena luego los atributos de la entidad Prospecto Prospecto p = new Prospecto(llena los atributos); 3º Llena los atributos de ProspectoTelefofono ProspectoTelefono pt = new ProspectoTelefono(t, p); 4º Atribuir a Telefono y Prospecto la entidad ProspectoTelefonoRelacionada, por ej. t.setProspectoTelefono(pt); p.setProspectoTelefono(pt); 4º Haz el persist de Prospecto telefono en tu sesion em.persist(pt); Listo, deberia funcionar. Ahora, claro que hay miles de variables y formas de implementarlo, como yo desconosco el contexto en el cual trabajas y teniendo en cuenta de la generalidad de tu pregunta, respondo simplemente de acuerdo a mi interpretacion, Espero te haya ayudado Un cordial Saludo. Marcos Jara [URL]http://tutorialjava7.wordpress.com[/URL] [URL]http://www.marcosjara.com[/URL] |
| |||
Respuesta: Inserción por lotes en una relacion muchos a muchos con hibernate Hola, Esta bien como lo planteas, debes de tener tres entidades, de las cuales solo dos se mapean, y cada una tiene un atributo de tipo Set, es decir, una entidad tiene una coleccion de la otra y viceversa. Lo que tienes que hacer es simplemente manejar los metodos de las colecciones segun el caso que sea, por ejemplo, para agregar/insertar debes de utilizar el metodo add(), para borrar usar el metodo remove() de las colecciones. Ejemplo: EntidadUno uno=(EntidadUno)session.load(EntidadUno.class, new Integer("1")); EntidadDos dos=(EntidadDos)session.load(EntidadDos.class, new Integer("2")); Supongamos que le quieres agregar a la entidad uno la entidad dos, esto se haria asi: uno.getListaEntidadesDos().add(uno); Eso es todo. Cualquier cosa nos avisas!! Saludos! |
| |||
Respuesta: Inserción por lotes en una relacion muchos a muchos con hibernate Que tal Marcos!!! Te respondo: Bueno la verdad, hace poco descubri Hibernate y me parecio fantastico ![]() Tengo 3 clases Prospecto, Telefono y ProspectoTelefono; cuyos atributos para cada una de ellas son los siguientes:
Código java:
Ver original
Código java:
Ver original
Código java:
Creo los objetos Prospecto, Telefono, ProspectoTelefono y posteriormente mando a grabar con session.save() a cada uno de mis objetos. Esto significaria 3 llamadas a mi DB y estoy hablando de miles de objetos Ver original ![]() Cita: La tabla ProspectoTelefono me sirve para romper la relación muchos a muchos que existe entre las tablas Prospecto y Telefono Cita: En está parte que mencionas me surge una duda
Iniciado por tutorialjava ![]() Si lo que quieres es hacer una relacion por un lado entre Telefono y TelefonoProspecto y por otro lado entre Prospecto y ProspectoTelefono, entonces no se trata de una relacion muchos a muchos sino de dos relaciones uno a muchos. Para ello lo que tiens que hacer es lo siguiente: 1º Llena primero los atributos de la entidad Telefono Telefono t = new Telefono(llena los atributos); 2º Llena luego los atributos de la entidad Prospecto Prospecto p = new Prospecto(llena los atributos); 3º Llena los atributos de ProspectoTelefofono ProspectoTelefono pt = new ProspectoTelefono(t, p); 4º Atribuir a Telefono y Prospecto la entidad ProspectoTelefonoRelacionada, por ej. t.setProspectoTelefono(pt); p.setProspectoTelefono(pt); 4º Haz el persist de Prospecto telefono en tu sesion em.persist(pt); Listo, deberia funcionar. ![]() Gracias Marcos por tu respuesta ![]() |
| |||
Respuesta: Inserción por lotes en una relacion muchos a muchos con hibernate Cita:
Iniciado por wblackday ![]() Que tal Bunburyscom!! A continuación, respondo tu cita: El ejemplo que tú me colocas ya lo leí con anterioridad en la documentación de Hibernate, el problema que se me presenta es que estoy leyendo toda la información desde un archivo xml y por ende, no tengo a ninguno de mis objetos Prospecto, Telefono o ProspectoTelefono persistentes en mi BD; si lo hago de la forma en que me indicas primero debería de persistir a todos mis objetos Prospecto y posteriormente realizar una carga para cada uno de ellos y agregar los objetos Telefono que corresponda a cada Prospecto. Bueno agradezco tu ayuda Bunburyscom, como respondi con anterioridad a Marcos soy novato con Hibernate y obviamente he de tener posiblemente algunos concpetos erroneos pero con su ayuda estoy seguro de corregir esos conceptos, gracias ![]() Entonces asi como dices tu seria otro analisis, la unica forma de hacer una relacion de muchos a muchos con Hibernate es asi como te comento. Y solo se mapean dos entidades, que en tu caso seria Telefono y Prospecto, la tercer entidad no se mapea. Pero analizando un poco puedes hacer todo lo que dices en una misma funcion, es decir, lees tu xml y creas tus instancias, hasta aqui todo facil, lo que seguiria es validar si el Telefono que le vas agregar a tu Prospecto o viceversa ya existe en la base sino, lo guarda y le asigna su nueva referencia. Digo, todo es cosa de ver como vas a cargar tus datos y desde donde los vas a recibir, pero teniendo bien analizado y mapeadas tus relaciones con Hiberate, Hibernate se encarga de lo demas. Saludos! |
| |||
Respuesta: Inserción por lotes en una relacion muchos a muchos con hibernate Cita: Que tal Bunburyscom!!! Gracias por tus respuestas
Iniciado por Bunburyscom ![]() Entonces asi como dices tu seria otro analisis, la unica forma de hacer una relacion de muchos a muchos con Hibernate es asi como te comento. Y solo se mapean dos entidades, que en tu caso seria Telefono y Prospecto, la tercer entidad no se mapea. Pero analizando un poco puedes hacer todo lo que dices en una misma funcion, es decir, lees tu xml y creas tus instancias, hasta aqui todo facil, lo que seguiria es validar si el Telefono que le vas agregar a tu Prospecto o viceversa ya existe en la base sino, lo guarda y le asigna su nueva referencia. Digo, todo es cosa de ver como vas a cargar tus datos y desde donde los vas a recibir, pero teniendo bien analizado y mapeadas tus relaciones con Hiberate, Hibernate se encarga de lo demas. Saludos! ![]() ![]() |
Etiquetas: |