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 :

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>
l'id est composé d'un objet Profil et d'un objet Utilisateur.

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:
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)
Il pointe sur le commit apparement...

Si quelqu'un avait une petit idée, merci