Bonjour,

Alors je ne pense pourtant pas vouloir faire une chose extraordinaire, cependant ça fait deux jours que je cherche un peu partout sur le net, je ne suis pas parvenu à trouver la solution à mon problème.

Edit : J'utilise Spring et Hibernate.

Le problème étant que j'ai une Map (java.util) d'objet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
private Map<Skill, Level> skill;
J'ai mappé donc la classe contenant cette Map à l'aide d'un fichier hbm, tout se passe bien jusqu'ici.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<map name="skill" table="QUESTION_SKILL_LEVEL">
       <key column="FK_ID_QUESTION" not-null="true" />
       <index-many-to-many column="FK_ID_SKILL" class="Skill" />
       <many-to-many column="FK_ID_LEVEL" class="Level" />
</map>
Le problème survenant lorsque je veux accéder à cette dernière. Une classe controller réalisant ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
List<Session> session = ((Session) appCtx.getBean("session")).getAvailableSessions();
		for (Session session2 : session) {
 
			for(Question q : session2.getQuestions()){
				for(Level l : q.getSkill().values()){
					System.out.println(l.getDescriptionKey());
					// Marche 
				}
				for(Skill s : q.getSkill().keySet()){
					System.out.println(s.getDescriptionKey());
					// Marche pas => LazyInitializationException
				}
			}
		}
La méthode getSkill() retourne donc la map. La map est bien retournée, et le pire étant que les valeurs sont bien initialisées, mais pas les clés !

Ci-après la requête appelée pour obtenir ce résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Sessions = getHibernateTemplate().find(
						 "SELECT distinct s "
						+"FROM Session as s "
						+"join fetch s.questions as quest "
						+"join fetch quest.skill as skill "
						+"WHERE s.startingDate >= ? ",
						new Object[] {minDate}
						);
Donc la LazyInitializationException est retournée parce que "join fetch quest.skill as skill " (skill étant la Map) ne charge que les valeurs de la map (Je suppose)

D'où ma question : Comment charger les clés de cette Map afin de ne pas avoir mon exception ^^

Un grand merci d'avance parce que là franchement je vois pas du tout comment contourner le problème