Hi guys i'm having a weird problem in here, i'm using JPA, Hibernate and Spring MVC
well in the controller class all the methods work great when i test them in the web browser EXCEPT the :
public String getModuleFormation(long id) method that returns one object and it gives me the following error :
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
as a root cause, but yesterday i tried it worked without problem in the localhost:45045/GestionModules/detail/xx URL
using the EL.
please what would cause this problem in my code (i know it's something about lazy loading i read a lot about it but i need to change the whole code if i want it to work again and what's the solution that i can only add to the function, thanks
detail.jsp :
POJO Class + JPA :Code:<c:if test="${!empty detailModule}"> ${detailModule.idModule} ${detailModule.libModule} </c:if>
DAO Class :Code:@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; } }
Service Class :Code:@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); } }
Controller Class :Code:@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); } }
Code:@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}"; } }


Reply With Quote
