Problema Hibernate relacion muchos a muchos

Alberto
06 de Abril del 2006
Hola:


Tengo las siguientes tablas: usuarios, perfiles, perfilesxusuarios (esta ultima tiene idusuario, idperfil)

Mi problema es que quiero crear un usuario e insertar en la tabla perfilesxusuario para asignarle un perfil y me da error.

Esto es un codigo de prueba para ver si me introduce los valores, pero falla:

Session session = HibernateUtil.getSessionFactory().openSession();
Tansaction tx = session.beginTransaction();
Usuarios u=new Usuarios();
try{
u.setNombre("Usuario_6");
u.setApellido1("ape_6");
u.setApellido2("ape2_6");
u.getPerfilesxusuarios().add("23");
u.getPerfilesxusuarios().add("24");
session.save(u);
tx.commit();
}catch (HibernateException e) {
tx.rollback();
log.error("ERROR AL CREAR UN USUARIO: "+e);
log.error(e.getMessage());
}finally{
session.flush();
session.close();
}


En mi Usuarios.hbm.xml tengo esto:

<set name="perfilesxusuarios" inverse="true">
<key>
<column name="idusuario" not-null="true" />
</key>
<one-to-many class="es.nucleo.hibernate.datos.Perfilesxusuario" />
</set>

En mi Perfiles.hbm.xml tengo esto:

<set name="perfilesxusuarios" inverse="true">
<key>
<column name="idperfil" not-null="true" />
</key>
<one-to-many class="es.nucleo.hibernate.datos.Perfilesxusuario" />
</set>

En mi Perfilesxusuario.hbm.xml tengo esto:

<many-to-one name="perfiles" class="es.nucleo.hibernate.datos.Perfiles" update="false" insert="false" fetch="select">
<column name="idperfil" not-null="true" />
</many-to-one>
<many-to-one name="usuarios" class="es.nucleo.hibernate.datos.Usuarios" update="false" insert="false" fetch="select">
<column name="idusuario" not-null="true" />
</many-to-one>

El error que me da es este:

ERROR org.hibernate.property.BasicPropertyAccessor.get - IllegalArgumentException in class: es.nucleo.hibernate.datos.Perfilesxusuario, getter method of property: id
ERROR org.hibernate.event.def.AbstractFlushingEventListener.performExecutions - Could not synchronize database state with session
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of es.nucleo.hibernate.datos.Perfilesxusuario.id


Utilizo java1.5, hibernate 3, postgreSQL 8.1, Tomcat 5.5, Struts 1.2.8 y los archivos de mapeo los he generado con Hibernate Tools.

Por favor ayuda, porque por mucho que busco e intento no logro encontrar la solución.

Muchas gracias de antemano.