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.