2010-06-13 6 views
2

Je construis une application dans Hibernate, Spring et JSF2 en utilisant uniquement des annotations. Comment puis-je profiter de OpenSessionInViewInterceptor trouvé dans Spring pour attraper une session d'hibernation qui pourrait s'ouvrir dans un bean? J'essaie de résoudre avec élégance le problème commun "échec d'initialiser paresseusement une collection de rôle: your.Class.assocation aucune session ou session a été fermée." Problème lors de la tentative de lecture à partir d'une liste non encore initialisée de POJO dans un autre POJO (Entité de balise récupérée par un DAO qui contient une liste d'objets de projet que je veux lire). J'ai trouvé ceci:
http://www.paulcodding.com/blog/2008/01/21/using-the-opensessioninviewinterceptor-for-spring-hibernate3/
mais je n'ai pas réussi à l'utiliser dans mon environnement.

S'il vous plaît fournir une réponse détaillée, car l'Internet est plein de tutoriels brumeux et inutiles. Je serai également reconnaissant pour une solution alternative, étant donné une instruction étape par étape est fournie.Utilisation de OpenSessionInViewInterceptor avec Hibernate et JSF 2

Répondre

3

Il s'est avéré tout à fait simple, beaucoup plus simple que les intercepteurs, AOP et les myriades de bizarreries qui peuvent être trouvées partout sur Internet. Insérez cet extrait (attention à mon petit commentaire dans le second init-param) dans votre fichier web.xml pour oublier tous vos malheurs.

<!-- Hibernate OpenSession Filter --> 
<filter> 
    <filter-name>hibernateFilter</filter-name> 
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
    <init-param> 
     <param-name>singleSession</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>sessionFactoryBeanName</param-name> 
     <param-value>***WhateverTheNameOfYourSessionFactoryBeanIs***</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>hibernateFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Cela n'a pas fonctionné pour moi. Peut-être parce que j'utilise Hibernate 4, je ne sais pas: S – Nikola