update qui ne se commit pas
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:
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:
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:
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:
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:
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 :)