Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/08/2011, 15:00
tronco020
 
Fecha de Ingreso: noviembre-2010
Ubicación: Tandil
Mensajes: 79
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problema en una consulta Hibernate

Hola titocba. Yo conozco 2 formas de hacerlo:

- Forma 1: Modificar manualmente el archivo de mapeo .xml e indicarle lazy = false. Ventaja: Te olvidas del problema porque cuando te trae el abuelo te trae hasta los nietos siempre. Desventajas: Te tenés que acordar siempre de modificar los archivos .xml cada vez que mapeas de nuevo la BD. Va a traer siempre los nietos, aún cuando no los necesites, generando esto un costo adicional de memoria y tiempo.

- Forma 2: A demanda. Cuando levantas el abuelo con "get", luego de traerlo ejecutas la siguiente sentencia:
Código Javascript:
Ver original
  1. Hibernate.initialize(abuelo.getHijos());
Y si esto no alcanzara, agrega otra parecida dentro de un for: para todos los hijos, inicializar los nietos, algo así:
Código Javascript:
Ver original
  1. for (Hijos hijo : abuelo.getHijos())
  2.     Hibernate.initialize(hijo.getNietos());
A mí me parece mejor la forma 2, con initialize(), ya que lo que hace es traerlo cuando realmente lo necesitas y no siempre.
Espero haber sido de ayuda. Suerte !