java - lazyinitializationexception - lazy jpa annotation
Hibernar carga perezosa en objetos separados (4)
He creado una clase en la que he configurado algunos de sus campos (otras entidades) para que sean cargados LAZY. Ahora necesito usar este objeto después de que se haya separado de la sesión, así que obviamente debo asegurarme de que todos los campos que necesito estén rellenados antes de separarlos. Intenté llamar a los captadores a estos campos perezosos, pero eso no pareció funcionar. ¿Alguien tiene una idea de cómo forzar la carga de estos campos?
Puede volver a adjuntarlo a la sesión. Esta es la forma normal.
session.update(yourObject); //This reattachs the object to the current session.
yourObject.someGetter(); //This will work now.
Sé que usted solicitó Hibernate, pero EclipseLink tiene esta característica, así que vale la pena verificar si está utilizando JPA y no está vinculado a una implementación determinada. Sin embargo, podría tener otros problemas al migrar a EclipseLink ...
<prop key="hibernate.enable_lazy_load_no_trans">true</prop>
puede agregar esta línea a su archivo de configuración, puede recuperar sus objetos perezosos incluso si está desconectado, pero debe usar la versión post 4.1.7 ya que hay algún problema de fuga de conexión con la versión anterior. vea here
Hibernate.initialize(yourObject)
forzará-inicializará el objeto / colección que se le pasa. Necesitas una sesión activa para esto.
Si la entidad está desconectada, tendría que volver a adjuntar el objeto (mediante la merge(..)
) a una sesión activa y luego inicializarlo.