Error org.hibernate.LazyInitializationException: could not initialize proxy - no Session .

Muy buen día

Mi nombre es Orlando, soy nuevo en esto de Java y tengo algunos problemas al momento de obtener unos objetos de una base de datos con Hibernate + Spring.

La situación es la siguiente, cuando realizo la consulta para obtener el objeto que tiene relación de uno a muchos no hay problema, lo puedo ver, lo puedo recorrer y aparentemente todo esta bien, el problema surge cuando intento enviar ese objeto como parámetro en un servicio SOAP.

Me podrían orientar para poder resolver este problema ?

Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

relaciones

Ese error es común cuando obtienes un objeto con relaciones a otras entidades pero por la configuración que tienes, no se obtienen dichos objetos dependientes sino que se quedan los proxies. Luego cierras la sesión y al querer resolverse los proxies, ocurre ese error. Lo que tienes que hacer es navegar por esos objetos dependientes con la sesión abierta, para que se resuelvan los proxies, y luego ya cerrar la sesión. O bien, obtener el objeto indicando a la sesión que quieres obtener también todas las dependencias (lazy=false o lo que sea, no recuerdo bien porque tiene tiempo que no uso hibernate).

Carga perezosa

Los puedes resolver de manera fácil (pero no la mejor) cambiando la anotación en tu clase entity, en el campo donde tienes la relación:

 

Yo tengo configurado mis Entity de la segunda forma solamente cuando la relación a la segunda tabla es un catalogo no muy extenso.

Espero te sirva, saludos!

Opcion 3

Te recomiendo crear un consulta especifica en la que saques esos objetos con un join , pero no te austes ese error es muy comun y tiene mas de una solución dependiendo de el contexto en el que se encuentra.

* Cambia lazy a eager (Siempre que obtengas ese objeto todas sus relaciones con el otro objeto se cargaran, recomiendo ver la consulta sql que se genera)

* Cambia la consulta (Creas una consulta especifica y solo la utilizas alli, esto ayudara optimizando la consulta, pero quiza solo se utilizara en esa parte de la aplicacion)

* recorrer la lista (Recorrer la lista creara una consulta por cada objeto que quieras cargar, es decir si tienes 10 objetos con proxy, se ejecutaran 10 consultas a la base de datos para cargarlo)

En todo caso te recomiendo leer esta pregunta

y mostar las consultas de SQL que ejecuta hibernate