salut les amis j'ai problème bizzare j'utilise JPA, Hibernate et Spring MVC
dans la classe controller toutes les méthodes fonctionnes très bien sauf :
public String getModuleFormation(long id) qui doit normalement retourner un objet après je peux l'exploiter comme je veux mais seule cette méthode elle me donne le problème suivant quand j'essai de l'appeler
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
root cause :
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
et ce qui est bizzare est que je l'ai essayé hier et ça a marché sans problème localhost:45045/GestionModules/detail/xx
svp est ce que quelqu'un pourra me dire la cause de ce problème et la solution possible seulement dans la méthode merci.
detail.jsp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
	<c:if test="${!empty detailModule}">
 
	${detailModule.idModule}
	${detailModule.libModule}
	</c:if>
POJO Class + JPA :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
    @Entity
    @Table(name="ModuleFormation")
    public class ModuleFormation {
 
	private long idModule;
	private String libModule;
 
	public ModuleFormation() {
		// TODO Auto-generated constructor stub
	}
 
	public ModuleFormation(String libModule) {
		this.libModule = libModule;
	}
 
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "seqModule")
	@SequenceGenerator(name="seqModule", sequenceName = "seqModuleFormation")
	@Column(name="idModule")
	public long getIdModule() {
		return this.idModule;
	}
 
	public void setIdModule(long idModule) {
		this.idModule = idModule;
	}
 
	@Column(name="libModule", nullable=false, length = 100)
	public String getLibModule() {
		return this.libModule;
	}
 
	public void setLibModule(String libModule) {
		this.libModule = libModule;
	}
 
    }
DAO Class :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
    @Repository
    public class ModuleFormationDAOImpl implements ModuleFormationDAO {
 
	@Autowired
	private SessionFactory sessionFactory;
 
 
	public void ajouterModuleFormation(ModuleFormation module) {
		sessionFactory.getCurrentSession().save(module);
	}
 
	public void supprimerModuleFormation(long idModule) {
		ModuleFormation module = (ModuleFormation) sessionFactory.getCurrentSession().load(ModuleFormation.class, idModule);
		if(module != null)
			sessionFactory.getCurrentSession().delete(module);
	}
 
	public List<ModuleFormation> listModuleFormation() {
 
		return sessionFactory.getCurrentSession().createQuery("from ModuleFormation")
				.list();
 
	}
 
	public ModuleFormation getModuleFormation(long idModule) {
		 return (ModuleFormation) sessionFactory.getCurrentSession().load(ModuleFormation.class, idModule);
	}
 
	public void majModuleFormation(ModuleFormation module) {
		sessionFactory.getCurrentSession().merge(module);
	}
 
    }
Service Class :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
    @Service
    public class ModuleFormationServiceImpl implements ModuleFormationService {
 
	@Autowired
	private ModuleFormationDAO moduleDao;
 
	@Transactional
	public void ajouterModuleFormation(ModuleFormation module) {
		moduleDao.ajouterModuleFormation(module);
	}
 
	@Transactional
	public void supprimerModuleFormation(long idModule) {
		moduleDao.supprimerModuleFormation(idModule);
	}
 
	@Transactional
	public List<ModuleFormation> listModuleFormation() {
		return moduleDao.listModuleFormation();
	}
 
	@Transactional
	public ModuleFormation getModuleFormation(long idModule) {
		return moduleDao.getModuleFormation(idModule);
	}
 
	@Transactional
	public void majModuleFormation(ModuleFormation module) {
		moduleDao.majModuleFormation(module);
	}
    }
Controller Class :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
    @Controller
    public class ModuleFormationController {
 
	@Autowired
	private ModuleFormationService moduleService;
 
	@RequestMapping("/module")
	public String listModulesFormations(Map<String, Object> map) {
 
		map.put("module", new ModuleFormation());
		map.put("moduleList", moduleService.listModuleFormation());
 
		return "module";
	}
 
	@RequestMapping(value = "/ajouter", method = RequestMethod.POST )
	public String ajouterModuleFormation(@ModelAttribute("module")
	ModuleFormation module,BindingResult result) {
 
		moduleService.ajouterModuleFormation(module);
 
		return "redirect:/module";
	}
 
 
	@RequestMapping(value = "/supprimer/{idModule}")
	public String supprimerModuleFormation(@PathVariable("idModule")
	long idModule) {
		moduleService.supprimerModuleFormation(idModule);
 
		return "redirect:/module";
	}
 
 
	@RequestMapping(value= "/detail/{idModule}")
	public String getModuleFormation(@PathVariable("idModule")
	long idModule,Map<String, Object> map) {
		map.put("detailModule", moduleService.getModuleFormation(idModule));
		return "/detail";
	}
 
 
	@RequestMapping(value= "/detail/modifier", method = RequestMethod.POST )
	public String majModuleFormation(@ModelAttribute("detailModule")
	ModuleFormation module, BindingResult result) {
		moduleService.majModuleFormation(module);
		return "detail/{idModule}";
	}
 
    }