Tengo un servicio que obtiene una entidad JPA desde un código externo. En este servicio me gustaría iterar sobre una colección cargada de forma diferida que es un atributo de esta entidad para ver si el cliente le ha agregado algo en relación con la versión actual en la base de datos.¿Cómo se prueba si la colección de JPA con carga diferida está inicializada?
Sin embargo, es posible que el cliente nunca haya tocado la colección, por lo que aún no se ha inicializado. Esto da lugar a la conocida
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.SomeEntity.
Por supuesto, si el cliente nunca tocó la colección, mi servicio no tiene que comprobar que los posibles cambios. La cuestión es que parece que no puedo encontrar una forma de comprobar si la colección está inicializada o no. Supongo que podría llamar al size()
y si arroja LazyInitializationException
lo sabría, pero estoy tratando de no depender de esos patrones.
¿Hay algún método de isInitialized()
en alguna parte?
¡Tiene razón, gracias! Olvidé revisar el desbordamiento de pila, así que lamento la aceptación tardía. – akira