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

relaciones bidireccionales hibernate

Estas en el tema de relaciones bidireccionales hibernate en el foro de Java en Foros del Web. Hola Tengo una clase alumno y otra clase curso. Un curso tiene varios alumnos. Quiero hacer una relación bidireccional. Tengo mapeados los hbms así: Para ...
  #1 (permalink)  
Antiguo 13/11/2008, 03:33
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
relaciones bidireccionales hibernate

Hola
Tengo una clase alumno y otra clase curso. Un curso tiene varios alumnos.
Quiero hacer una relación bidireccional. Tengo mapeados los hbms así:

Para el alumno:

<many-to-one name="curso"
column="codigo"
class="org.logica.dominio.Curso"
not-null="false" />
Para el curso:
<set name="alumnos" cascade="all-delete-orphan" >
<key column="codigo" not-null="false" />
<one-to-many class="org.logica.dominio.Alumno" />
</set>

El problema está cuando inserto un alumno. ¿Como se hace?
En una bidireccional entiendo que hay que hacer esto:

alumno.setCurso(curso);
curso.getAlumnos().add(alumno);
alumnoServicio.anhadirAlumno(alumno);

Es decir, a los alumnos les asigno el curso, y al curso le añado el alumno. ¿Es así? Me está fallando, en la línea que pongo curso.getAlumnos().add(alumno);
Excepción: javanullPointerException
Saludos!!
__________________
Si lo supiese no preguntaría...
  #2 (permalink)  
Antiguo 13/11/2008, 05:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: relaciones bidireccionales hibernate

Eso es por que como el curso todavia no tiene Alumnos, curso.getAlumnos() devuelve null y de ahi la Excepcion.
Se soluciona creando una Collection, añadiendole el alumno y haciendo un curso.setAumnos(laColeccion);, sólo en el caso de que curso.getAlumnos devuelva null, claro, si no es así el funcionamiento es el normal.

Hibernate a veces devuelve colecciones vacias y a veces devuelve null, por eso el tema hay que tratarlo con más cuidado.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 13/11/2008, 05:19
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: relaciones bidireccionales hibernate

Ok. Problema solucionado.
Y en una bidireccional se hace así como puse? Es decir, al curso le asigno el alumno y al alumno el curso?
Saludos!!
__________________
Si lo supiese no preguntaría...
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 17:09.