IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Could not execute JDBC batch update


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Par défaut Could not execute JDBC batch update
    salut tous le monde, je suis nouveau avec hibernate, jai une table qui a une clé composé,j utilise myeclipse.
    voici le script de la table généré avec oracle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE "ISIFINUSER"."PHASE_ETAPE" ("ID_PROJ" NUMBER(2) NOT 
        NULL, "ID_ETAPE" NUMBER(2) NOT NULL, "DATE" VARCHAR2(25 byte)
        NOT NULL, "DATE_DEB_ETAPE" VARCHAR2(25 byte) NOT NULL, 
        "DATE_FIN_ETAPE" VARCHAR2(25 byte) NOT NULL, "COMMENT_ETAPE" 
        VARCHAR2(1000 byte) NOT NULL, 
        CONSTRAINT "PHASE_ETAPE_PK" PRIMARY KEY("ID_PROJ", "ID_ETAPE",
        "DATE")
    j ai mappé cette table et jai le fichier de mapping suivant:
    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
     
    <hibernate-mapping>
        <class name="com.isifin.hiber.PhaseEtape" table="PHASE_ETAPE" schema="ISIFINUSER">
            <composite-id name="id" class="com.isifin.hiber.PhaseEtapeId">
                <key-property name="idProj" type="java.lang.Long">
                    <column name="ID_PROJ" precision="2" scale="0" />
                </key-property>
                <key-property name="idEtape" type="java.lang.Long">
                    <column name="ID_ETAPE" precision="2" scale="0" />
                </key-property>
                <key-property name="date" type="java.lang.String">
                    <column name="DATE" length="25" />
                </key-property>
            </composite-id>
            <property name="dateDebEtape" type="java.lang.String">
                <column name="DATE_DEB_ETAPE" length="25"  />
            </property>
            <property name="dateFinEtape" type="java.lang.String">
                <column name="DATE_FIN_ETAPE" length="25"  />
            </property>
            <property name="commentEtape" type="java.lang.String">
                <column name="COMMENT_ETAPE" length="1000"  />
            </property>
        </class>
    </hibernate-mapping>
    il ya deux class java resultantes: la classe de l identifiant et la class PhaseTache
    voici le code des deux 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
    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
    81
    82
    83
    84
    85
     
    ublic class PhaseEtapeId implements java.io.Serializable {
     
    	// Fields
     
    	private Long idProj;
     
    	private Long idEtape;
     
    	private String date;
     
    	// Constructors
     
    	/** default constructor */
    	public PhaseEtapeId() {
    	}
     
    	/** full constructor */
    	public PhaseEtapeId(Long idProj, Long idEtape, String date) {
    		this.idProj = idProj;
    		this.idEtape = idEtape;
    		this.date = date;
    	}
     
    	// Property accessors
     
    	public Long getIdProj() {
    		return this.idProj;
    	}
     
    	public void setIdProj(Long idProj) {
    		this.idProj = idProj;
    	}
     
    	public Long getIdEtape() {
    		return this.idEtape;
    	}
     
    	public void setIdEtape(Long idEtape) {
    		this.idEtape = idEtape;
    	}
     
    	public String getDate() {
    		return this.date;
    	}
     
    	public void setDate(String date) {
    		this.date = date;
    	}
     
    	public boolean equals(Object other) {
    		if ((this == other))
    			return true;
    		if ((other == null))
    			return false;
    		if (!(other instanceof PhaseEtapeId))
    			return false;
    		PhaseEtapeId castOther = (PhaseEtapeId) other;
     
    		return ((this.getIdProj() == castOther.getIdProj()) || (this
    				.getIdProj() != null
    				&& castOther.getIdProj() != null && this.getIdProj().equals(
    				castOther.getIdProj())))
    				&& ((this.getIdEtape() == castOther.getIdEtape()) || (this
    						.getIdEtape() != null
    						&& castOther.getIdEtape() != null && this.getIdEtape()
    						.equals(castOther.getIdEtape())))
    				&& ((this.getDate() == castOther.getDate()) || (this.getDate() != null
    						&& castOther.getDate() != null && this.getDate()
    						.equals(castOther.getDate())));
    	}
     
    	public int hashCode() {
    		int result = 17;
     
    		result = 37 * result
    				+ (getIdProj() == null ? 0 : this.getIdProj().hashCode());
    		result = 37 * result
    				+ (getIdEtape() == null ? 0 : this.getIdEtape().hashCode());
    		result = 37 * result
    				+ (getDate() == null ? 0 : this.getDate().hashCode());
    		return result;
    	}
     
    }

    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
     
    public class PhaseEtape implements java.io.Serializable {
     
    	// Fields
     
    	private PhaseEtapeId id;
     
    	private String dateDebEtape;
     
    	private String dateFinEtape;
     
    	private String commentEtape;
     
    	// Constructors
     
    	/** default constructor */
    	public PhaseEtape() {
    	}
     
    	/** full constructor */
    	public PhaseEtape(PhaseEtapeId id, String dateDebEtape,
    			String dateFinEtape, String commentEtape) {
    		this.id = id;
    		this.dateDebEtape = dateDebEtape;
    		this.dateFinEtape = dateFinEtape;
    		this.commentEtape = commentEtape;
    	}
     
    	// Property accessors
     
    	public PhaseEtapeId getId() {
    		return this.id;
    	}
     
    	public void setId(PhaseEtapeId id) {
    		this.id = id;
    	}
     
    	public String getDateDebEtape() {
    		return this.dateDebEtape;
    	}
     
    	public void setDateDebEtape(String dateDebEtape) {
    		this.dateDebEtape = dateDebEtape;
    	}
     
    	public String getDateFinEtape() {
    		return this.dateFinEtape;
    	}
     
    	public void setDateFinEtape(String dateFinEtape) {
    		this.dateFinEtape = dateFinEtape;
    	}
     
    	public String getCommentEtape() {
    		return this.commentEtape;
    	}
     
    	public void setCommentEtape(String commentEtape) {
    		this.commentEtape = commentEtape;
    	}
     
    }
    MyEclipse génére aussi des class utilitaire PhaseTacheDAO qui posséde une methode save();
    le probléme est que quand jessay de sauvegarder un nouvel objet avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    PhaseEtapeId phaseEtapeId=new PhaseEtapeId(Long.getLong("1"),Long.getLong(afficherFormulaireForm.getId_etape()),stDate);
     
    		PhaseEtape phaseEtape=new PhaseEtape(phaseEtapeId,afficherFormulaireForm.getDate_deb_etape(),afficherFormulaireForm.getDate_fin_etape(),afficherFormulaireForm.getComment());
    		PhaseEtapeDAO phaseEtapeDAO=new PhaseEtapeDAO();
    		Transaction tx=phaseEtapeDAO.getSession().beginTransaction();
    		phaseEtapeDAO.save(phaseEtape);
    		tx.commit();
    		phaseEtapeDAO.getSession().close();
    j ai l erreur suivante:
    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
     
    exception 
     
    javax.servlet.ServletException: Could not execute JDBC batch update
    	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     
     
    cause mère 
     
    org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
    	org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
    	org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
    	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
    	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
    	org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
    	org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
    	org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
    	org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
    	com.isifin.struts.action.SauverAction.execute(SauverAction.java:57)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

    si quelqu un peut m aider je lui serai tres reconnaissant,
    merci davance

  2. #2
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut demi reponse
    Je crois que si tu élimine la transaction sa marchera.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Par défaut
    non, le problème été dans lattribut "DATE" puisk hibernate le reconnai comme mot propre.
    merci commeme

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/05/2009, 12h20
  2. Réponses: 1
    Dernier message: 30/09/2008, 17h13
  3. could not execute query
    Par nabil148911 dans le forum Hibernate
    Réponses: 3
    Dernier message: 20/07/2007, 14h37
  4. [Hibernate][error] Could not execute JDBC batch update
    Par CPI_en_mousse dans le forum Hibernate
    Réponses: 7
    Dernier message: 01/06/2007, 09h41
  5. [EJB3] Could not execute JDBC batch update
    Par ®om dans le forum JPA
    Réponses: 18
    Dernier message: 07/03/2007, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo