Bonjour,
Apres avoir mis en place les fonctions pour ajouter et supprimer un enregistrement en base via hibernate, je tente actuellement d'effectuer le update.
La table que je souhaite mettre à jour se compose comme ceci :
l'id est composé d'un objet Profil et d'un objet Utilisateur.
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 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping package="fr.sdis44.annu.hibernate"> <class name="UtilisateurProfil" table="COMPTE_PROFIL" lazy="true"> <composite-id class="fr.sdis44.annu.hibernate.compositeKeys.UtilisateurProfilPK" name="Id"> <key-many-to-one column="ID_COMPTE" name="IdUtilisateur" class="Utilisateur" /> <key-many-to-one column="ID_PROFIL" name="IdProfil" class="Profil" /> </composite-id> <property column="DATE_FIN" length="7" name="DateFin" not-null="false" type="date" /> <property column="COMMENTAIRE" length="30" name="Commentaire" not-null="false" type="string" /> <property column="DATE_DEBUT" length="7" name="DateDebut" not-null="false" type="date" /> <property column="TS_COMPTE_PROFIL" length="7" name="TsUtilisateurProfil" not-null="true" type="date" /> </class> </hibernate-mapping>
ma servlet
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
52
53
54
55
56
57
58
59
60
61
62
63
64 /** MODIFICATION DES APPLICATIONS **/ if (Action.MODIFIER.equals(action)) { System.out.println("Modification des applications du membres"); Utilisateur utilisateur = (Utilisateur)request.getSession().getAttribute("utilisateur"); UtilisateurApplication sonAppli = (UtilisateurApplication)request.getSession().getAttribute("sonAppli"); UtilisateurApplication sonAppliOld = sonAppli; System.out.println("userName= "+utilisateur.getNom()); Profil prof = (Profil)ProfilDAO.getInstance().findProfById(request.getParameter("profils")); System.out.println("profilsModif= "+prof.getId()); UtilisateurProfilPK key = new UtilisateurProfilPK(); UtilisateurProfil sonProfilVoulu = new UtilisateurProfil(); key.setIdProfil(prof); key.setIdUtilisateur(utilisateur); sonProfilVoulu.setCommentaire("test update"); sonProfilVoulu.setDateDebut(new Date()); sonProfilVoulu.setDateFin(new Date()); sonProfilVoulu.setId(key); sonProfilVoulu.setTsUtilisateurProfil(new Date()); sonProfilVoulu.getId().setIdProfil(prof); sonProfilVoulu.getId().setIdUtilisateur(utilisateur); System.out.println("(UP)sonProfVoulu - prof: "+sonProfilVoulu.getId().getIdProfil().getId()); System.out.println("(UP)sonProfVoulu - util: "+sonProfilVoulu.getId().getIdUtilisateur().getId()); Profil monProfActuel = UtilisateurApplicationDAO.getInstance().findProfil(utilisateur.getId(), sonAppli.getId().getIdApplication().getId()); System.out.println("(Profil)monProfActuel: "+monProfActuel.getId()); key.setIdProfil(monProfActuel); key.setIdUtilisateur(utilisateur); UtilisateurProfil sonProfilActuel = (UtilisateurProfil)UtilisateurProfilDAO.getInstance().findUpById(key); System.out.println("(UP)sonProfActuel: "+sonProfilActuel.getId().getIdProfil().getId()); String sonCommentaire = request.getParameter("comment"); Application appli = ApplicationDAO.getInstance().findAppById(sonAppli.getId().getIdApplication().getId()); sonAppli.setCommentaire(sonCommentaire); try { FormulaireUtilisateurServices.getInstance().updateApplication(sonAppliOld,sonAppli); sonProfilVoulu.getId().setIdProfil(prof); System.out.println("FormApp - verif sonProfVoulu "+sonProfilVoulu.getId().getIdProfil().getId()); System.out.println("FormApp - verif sonProfActuel "+sonProfilActuel.getId().getIdProfil().getId()); FormulaireUtilisateurServices.getInstance().updateProfilApplication(utilisateur, sonProfilVoulu,sonProfilActuel); response.sendRedirect("resultatApplication.jsp"); return; } catch (Exception e) { request.setAttribute("exception", e); getServletContext().getRequestDispatcher(JSP_PATH+"resultatApplication.jsp").forward(request, response); } }
FormulaireUtilisateurService
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 /** * met à jour l'application pour l'utilisateur courant * @param appli * @param utilisateur * @throws Exception */ public void updateApplication(UtilisateurApplication sonAppliOld, UtilisateurApplication sonAppli ) throws Exception{ logger.debug("updateApplication"); Session sessionHibernate = HibernateUtil.currentSession(); Transaction transaction = null; try{ logger.debug("Modification de la base"); try { System.out.println("MAJApp0"); //System.out.println("id:"+appli.getId()); //System.out.println("user:"+utilisateur.getNom()); transaction = dataBaseUtilisateurServices.updateApplicationIntoDB(sonAppliOld,sonAppli); logger.debug("Commit transaction ..."); transaction.commit(); System.out.println("MAJApp1"); }catch (Exception e) { logger.error("Erreur JDBC"); throw e; } }catch (Exception e) { if (transaction != null) { logger.debug("Rollback transaction ..."); transaction.rollback(); } logger.debug("OK"); e.printStackTrace(); throw e; } finally { HibernateUtil.closeSession(); } } public void updateProfilApplication(Utilisateur util,UtilisateurProfil sonProfilVoulu, UtilisateurProfil sonProfilActuel) throws Exception{ logger.debug("updateProfilApplication"); Session sessionHibernate = HibernateUtil.currentSession(); Transaction transaction = sessionHibernate.beginTransaction(); try{ logger.debug("Modification de la base"); try { System.out.println("MAJApp0"); //System.out.println("id:"+appli.getId()); //System.out.println("user:"+utilisateur.getNom()); System.out.println("FormUtiServ - verif sonProfVoulu "+sonProfilVoulu.getId().getIdProfil().getId()); System.out.println("FormUtiServ - verif sonProfActuel "+sonProfilActuel.getId().getIdProfil().getId()); transaction = dataBaseUtilisateurServices.updateProfilApplicationIntoDB(util,sonProfilVoulu, sonProfilActuel); logger.debug("Commit transaction ..."); //transaction.commit(); sessionHibernate.flush(); System.out.println("MAJApp1"); }catch (Exception e) { logger.error("Erreur JDBC"); throw e; } }catch (Exception e) { if (transaction != null) { logger.debug("Rollback transaction ..."); transaction.rollback(); } logger.debug("OK"); e.printStackTrace(); throw e; } finally { HibernateUtil.closeSession(); } }
databaseUtilisateurService
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 /** * met à jour l'application pour cet utilisateur * @param appli * @param utilisateur * @throws org.hibernate.HibernateException */ public Transaction updateApplicationIntoDB(UtilisateurApplication sonAppliOld,UtilisateurApplication sonAppli) throws org.hibernate.HibernateException { logger.debug("FormulaireUtilisateurServices.updateApplicationIntoDB"); Transaction transaction = null; sonAppliOld.setCommentaire(sonAppli.getCommentaire()); sonAppliOld.setTsUtilisateurApplication(new Date()); //sonAppliOld.setDateDebut(sonAppli.getDateDebut()); //sonAppliOld.setDateFin(sonAppli.getDateFin()); transaction = UtilisateurApplicationDAO.getInstance().update(sonAppliOld); return transaction; } /** * met à jour le profil de l'application pour cet utilisateur * @param utilisateur * @param sonProfil * @throws org.hibernate.HibernateException */ public Transaction updateProfilApplicationIntoDB(Utilisateur util,UtilisateurProfil sonProfilVoulu, UtilisateurProfil sonProfilActuel) throws org.hibernate.HibernateException { logger.debug("FormulaireUtilisateurServices.updateProfilApplicationIntoDB"); Transaction transaction = null; System.out.println("DatabaseUti - sonProfActuel "+sonProfilActuel.getId().getIdProfil().getId()); System.out.println("DatabaseUti - sonProfVoulu "+sonProfilVoulu.getId().getIdProfil().getId()); sonProfilActuel.setId(sonProfilVoulu.getId()); sonProfilActuel.setTsUtilisateurProfil(new Date()); sonProfilActuel.setCommentaire("ouarf"); sonProfilActuel.setDateDebut(sonProfilVoulu.getDateDebut()); sonProfilActuel.setDateFin(sonProfilVoulu.getDateFin()); //UtilisateurProfilDAO.getInstance().updateUp(sonProfilActuel,sonProfilVoulu); transaction = UtilisateurProfilDAO.getInstance().update(sonProfilActuel); return transaction; }
Le fait est qu'actuellement, la modification pour l'application(UtilisateurApplication) se fait mais en ce qui concerne le profil (UtilisateurProfil) , rien ne se passe.
Je sais pas si ca a un rapport mais j'ai ce message lors de l'execution:
Il pointe sur le commit apparement...
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 15:53:31,329 INFO [Tomcat] - Problem with checked-in Statement, discarding. java.lang.NullPointerException at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431) at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528) at oracle.jdbc.driver.OraclePreparedStatement.clearParameters(OraclePreparedStatement.java:3401) at com.mchange.v2.c3p0.stmt.GooGooStatementCache.refreshStatement(GooGooStatementCache.java:604) at com.mchange.v2.c3p0.stmt.GooGooStatementCache.checkinStatement(GooGooStatementCache.java:236) at com.mchange.v2.c3p0.impl.NewPooledConnection.checkinStatement(NewPooledConnection.java:282) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1807) at org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:534) at org.hibernate.jdbc.AbstractBatcher.closeStatement(AbstractBatcher.java:269) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:249) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) at fr.sdis44.annu.hibernate.services.FormulaireUtilisateurServices.updateApplication(FormulaireUtilisateurServices.java:450) at fr.sdis44.annu.servlet.FormulaireApplicationServlet.doPost(FormulaireApplicationServlet.java:306) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.jalios.jcms.servlet.FriendlyURLFilter.doFilter(FriendlyURLFilter.java:115) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:619)
Si quelqu'un avait une petit idée, merci![]()
Partager