Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité régulier
    Homme Profil pro Brems Dali
    Inscrit en
    juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Nom : Homme Brems Dali

    Informations forums :
    Inscription : juillet 2010
    Messages : 16
    Points : 5
    Points
    5

    Par défaut no session or session was closed

    Bonjour,

    J'envisage toujours le même problème avec Hibernate, je m'explique:

    Je récupère une liste d’évènement de ma BDD, dans un 'Set', dans chq evnt il y a des participants je dois afficher chq evnt suivi de sa liste de participant, le problème est la: qd j'essaye d’accéder a la liste des participant l'exception suivante se lève:

    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: metier.Evenement.Participants, no session or session was closed

    Les fichiers de mapping:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <class name="Evenement" table="event" lazy="true">
    		<id name="code" type="integer" column="code">
    			<generator class="native" />
    		</id>
     
    		<property name="nom" />		
    		<property name="date" type="date"/>
     
                   <set name="Participants" inverse="true" cascade="all" fetch="join">
    			<key>
    				<column name="code" />
    			</key>
    			<one-to-many class="Membre" />
    		</set>
    </class>
    Servlet:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    public class ActionChargerClssmnt extends Action{	
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
    		ArrayList<Evenement> tab1;
     
    		DAOEvent dao = DAOEventHBM.getInstance();
     
    		tab1 = dao.load();	
     
     
    		request.setAttribute("Liste_Evnt", tab1);
    		return mapping.findForward("succes");
    }
    Jsp:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <logic:iterate id="clssmnt" name="Liste_Cat" scope="request">			
    			<strong> <bean:write name="clssmnt" property="nom" />:	</strong>
    			<br/>	
     
    			<logic:iterate id="score" name="clssmnt" property="classements">			
    			Id membre: <bean:write name="score" property="code.codeMbr" />, 
    			 son score: <bean:write name="score" property="score" />
    			<br/>	
     
    			</logic:iterate>
    	</logic:iterate>

  2. #2
    Membre Expert
    Homme Profil pro Mathieu
    Ingénieur développement logiciels
    Inscrit en
    avril 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme Mathieu
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2004
    Messages : 1 181
    Points : 1 758
    Points
    1 758

    Par défaut

    T'as du te tromper de JSP ou de DAO car tu nous montre un DAO qui charge des Evenement et une JPS qui affiche des catégories/classement.


    Cela dit, ton problème vient du fait que tes relations sont en mode LAZY. Une fois au niveau WEB tes entités sont détachées de ta session et quand tu accède à ta propriété tu as l'exception LazyInitializationException.

    Soit tu les passes en mode EAGER pour que tout soit chargé dès le départ.
    Soit tu laisses en mode LAZY et tu effectues l'accès à la propriété dans ta session avant de le faire au niveau web.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •