Bonjour à tous !

Alors voilà je voulais charger des données au démarrage (c'est un projet Spring MVC 3.0.x) ! notamment celle concernant mon menu qui est composé de famille qui contienne eux même les sous famille qui contiennent eux même les types (c'est donc du @OneToMany à chaque fois)

J'ai donc implémenter ServletContextAware après avoir trouver des tutos sur le net, de façon a pouvoir mettre mes familles/sous-familles/types dans le scope application afin de pouvoir y accéder dans ma jsp (menu.jsp) qui est ensuite utilisé dans mes templates apache tiles.
J'ai donc défini l’implémentation de ServletContextAware comme un bean spring dans mon fichier de conf spring

Et donc la 1ere chose :
Est ce que c'est bien comme ça qu'il fallait faire ?
Et la 2eme concerne le fait que j'ai eu une lazy load exception, que j'ai réussi a faire passer en mettant fetch = FetchType.EAGER sur le premier @OneToMany (qui est sur une List) comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "family")
	public List<EventSubFamily> getSubFamilys() {
		return subFamilys;
	}
en revanche le 2ème @OneToMany J'ai du la passer en Set ! :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
@OneToMany(fetch = FetchType.EAGER, mappedBy = "subFamily")
	public Set<EventType> getTypes() {
		return types;
	}
sinon j'avais une exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
Car dans ma page menu.jsp je parcours la liste de famille avec un foreach et ensuite pour chaque famille je parcours la liste de sousfamilles si elle sont supérieur à 1 sinon je parcours la liste des types quand il y a qu'une seul sous familles (afin de pas affiché de niveau inutile)

Je précise aussi que j'ai bien le filter JPA :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<filter>
		<filter-name>JpaFilter</filter-name>
		<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
	</filter>
 
	<filter-mapping>
		<filter-name>JpaFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
Que fauderait il faire pour que je n'ai pas a faire tous ses changement et pourquoi je suis obliger de mettre un Set sur le 2eme OneToMany ?
(le fetche eager ne me dérange puisque ça permet d'éviter d'aller taper dans la base à chaque fois pour récupérer les sous famille et type)

Merci d'avance