org.hibernate.LazyInitializationException: impossible d'initialiser le proxy - pas de session
J'ai 2 serveurs physiques qui mon application web hits gérés par des équilibreurs de charge. Je reçois toujours -
org.mise en veille prolongée.LazyInitializationException: impossible d'initialiser le proxy - pas de Session
lorsque l'un des serveurs sont touchés, tandis que l'autre fonctionne en douceur, sans aucun problème. J'ai un local géré banque de cache activé et gérées par l'application. Cette exception se produit uniquement lors de la tentative d'accéder à une colonne d'une table. Le reste des opérations de travail absolument parfait quel que soit le serveur qui est touché.
Faire lazy=false va devenir un problème de performance, parce que le nombre de lignes dans la table est assez grande. Et par la façon dont, nous sommes à l'aide de get(object) sur la session au lieu de la charge(de l'objet).
source d'informationauteur Surya Mukerjee
Vous devez vous connecter pour publier un commentaire.
De balises que vous avez fourni, j'en déduis que vous avez couru dans ce problème à l'aide du Framework Spring. J'ai couru dans le même
LazyInitializationException
lors de l'utilisation d'un Ressort de Donnéesorg.springframework.data.jpa.repository.JpaRepository
.J'ai résolu le problème en annotant la méthode indirecte utilise Hibernate pour récupérer des données à partir de la base de données avec
@Transactional
.Cela ressemble à la colonne sur laquelle vous tentez d'accéder est configuré comme une association de ce genre de votre entité (OneToMany, ManyToOne, peu importe) et de ne pas renseigner cette association dans votre DAO. Ensuite, lorsque vous essayez d'accéder à la colonne (dans un endroit dans le code où il n'y a pas de Session Hibernate), ce n'est pas remplie, Hibernate essaie de le charger, et boom.
Depuis que vous êtes en fait en utilisant les données de l'association, le rendant
EAGER
sonne comme quelque chose que vous voulez faire. Et si la table est grande, vous devriez regarder lors de l'indexation de sorte que les requêtes sont efficaces.Votre objet est détaché. Vous avez besoin de re-joindre à la session en cours avant de pouvoir y accéder:
Assurez-vous également d'accéder à l'intérieur d'une transaction
Lire plus sur le problème/solution ici
Est qu'une association ou à la propriété si elle est une propriété, alors le problème peut être que celui du serveur est en cours d'exécution non version instrumentée.