Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   insertar datos en tablas con realcion muchos a muchos con hibernate (http://www.forosdelweb.com/f21/insertar-datos-tablas-con-realcion-muchos-muchos-con-hibernate-585632/)

rls 12/05/2008 15:21

insertar datos en tablas con realcion muchos a muchos con hibernate
 
hola ya he mapeado toda mi base de datos que esta en postgresql, pero tengo un problimita a la hora de insertar datos en tablas que tienen relacion de muchos a muchos.
Las tablas que tengo son:

fin(idfin,descripcion)
indicadores(idind,descripcion)
finindicador(idfin,idind)

como pueden ver "fin" e "indicadores" son las tablas fuertes y "finindicador" es tabla que se crea debido a que las dos tablas antes mencionadas tienen una relacion de muchos a muchos.

El mapeo lo hice de la siguiente forma:

Archivo: Fin.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//hibernate/hibernate Mapping DTD 2.0//EN"
"webapps/mml/WEB-INF/src/hibernate-mapping-2.0.dtd">
<hibernate-mapping>

<class name="tablas.Fin" table="fin">
<id name="idfin" type="long">
<generator class="increment"/>
</id>
<set name="indicador" table="finindicador" cascade="all">
<key column="idfin"/>
<many-to-many column="idind" class="tablas.Indicadores"/>
</set>
</class>
</hibernate-mapping>

archivo: Indicadores.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//hibernate/hibernate Mapping DTD 2.0//EN"
"webapps/mml/WEB-INF/src/hibernate-mapping-2.0.dtd">
<hibernate-mapping>

<class name="tablas.Indicadores" table="indicadores">
<id name="idind" type="long">
<generator class="increment"/>
</id>
<set name="fin" table="finindicador" inverse="true" cascade="all">
<key column="idind"/>
<many-to-many column="idfin" class="tablas.Fin"/>
</set>
</class>
</hibernate-mapping>

Y el metodo que tengo para insertar es:

private boolean insertarFin(String xidfin, String xdescripcion) {
boolean b=true;
try {
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Fin fin = (Fin)session.load(Fin.class, new Long(xidfin));
Indicadores indicador=new Indicadores();
indicador.setDescripcion(xdescripcion);
indicador.getFin().add(fin);
session.save(indicador);
tx.commit();
HibernateUtil.closeSession();
} catch (HibernateException e) {
b=false;
e.printStackTrace();
}
return b;
}


Como podemos ver en el codigo,primero se obtine un registro de la tabla "fin", el mismo se lo adiere a la coleccion que esta en la clase Indicadores y luego guarda los datos. El problema que tengo es que solo inserta en la tabla "indicadores" y tambien deberia insertar los ids de las tabla "fin" e "indicadores" en la tabla "finindicador", pero no lo hace y no entiendo porque.

Si alguien me podria ayudar se lo agradeceria enormemente.

seyko 13/05/2008 01:24

Re: insertar datos en tablas con realcion muchos a muchos con hibernate
 
Esto es BD, en un foro de hibernate te lo solucionarán mejor.

Un saludo


La zona horaria es GMT -6. Ahora son las 05:48.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.