Bonjour,
Actuellement j'utilise JPA avec un implémentation OpenJPA et Hibernate dans un conteneur Spring.
Mon projet est constitué d'une couche Web, d'une couche Service et d'une couche DAO. Mon contexte de persistance se trouve au niveau de la DAO et n'est pas étendu.
Quand j'effectue une requête dans ma DAO :
- je récupère une entité contenant une collection (donc chargé en mode Lazy).
- Je la renvoie à mon service
- Dans mon service je convertie (grace à une classe à part) mon entité vers un autre objet.
- Lors de la conversion j'appelle le getter de la collection
- J'ai donc une Exception (LazyInitializationException) car il ne retrouve plus ma session Hibernate. Ce qui tout à fait normal.
Mon convertisseur gère ce cas en catchant cette exception et en remplacent cette collection par une collection vide. Mais Hibernate trace quand même cette erreur dans les logs ce qui n'est pas très propre.
Ma question est la suivante:
- Peut on empêcher Hibernate de tracer cette erreur ?
- Ou peut on gérer ce mode afin qu'il renvoi une collection vide dans le cas ou la session n'est pas récupérable au moment du getter (ce qui serait mieux) ?
NB: mon but n'est pas de savoir comment récupérer cette liste mais vraiment d'effacer le message ou d'avoir un Interceptor qui me permet de gérer un chargement LAZY qui à échoué avant que l'exepction LazyInitializationException ne soit lancée.
Merci d'avance
Partager