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 :

[SPRING][HIBERNATE][MYSQL] insert et valeur des champs.


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Par défaut [SPRING][HIBERNATE][MYSQL] insert et valeur des champs.
    Bonjour, je fais une appli struts, spring, hibernate, mysql et lorsque je crée un objet qu'hibernate va insérer en base, j'ai une erreur si je ne rempli pas tous les paramètres de mon objet.

    Je m'explique : j'ai un objet voiture qui a comme paramètres un id, un nom, un modele, une annee, un kilométrage et un responsable.
    En base j'ai donc voiture(voi_id,voi_nom,voi_modele,voi_annee,voi_kilometrage,res_id).

    Mon fichier de mapping :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <hibernate-mapping>
            <class name="fr.gestentrep2.voitures.pojos.Voiture" table="T_VOI_VOITURE">
                <id name="id" column="voi_id" type="int"><generator class="increment"/></id>
                <property name="nom" column="voi_nom" type="string"/>
                <property name="modele" column="voi_modele" type="string"/>
                <property name="annee" column="voi_annee" type="int"/>
                <property name="kilometrage" column="voi_kilometrage" type="long"/>
                <property name="responsableId" column="res_id" type="int"/>
            </class>
    </hibernate-mapping>
    Lorsque je fais dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Session session = sessionFactory.getCurrentSession();
            Voiture theVoiture = new Voiture();
            theVoiture.setNom(nom);
            theVoiture.setModele(modele);
            theVoiture.setAnnee(Integer.parseInt(annee));
            theVoiture.setKilometrage(Long.parseLong(kilometrage));
            session.save(theVoiture);
    j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.servlet.ServletException: Hibernate operation: Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into T_VOI_VOITURE (voi_nom, voi_modele, voi_annee, voi_kilometrage, res_id, voi_id) values (?, ?, ?, ?, ?, ?)]; SQL state [S1009]; error code [0]; Statement parameter 5 not set.; nested exception is java.sql.BatchUpdateException: Statement parameter 5 not set.
    Apparemment il ne veux pas créer l'objet en base car il manque le 5ième paramètre qui est le responsable (res_id).

    Mais moi je veux quand même créer mon objet avec un res_id vide.

    Comment faire?

    ps: je précise que sans spring l'insert se fait correctement et res_id est vide.

  2. #2
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Par défaut
    et ton bean Voiture il ressemble à quoi ?

  3. #3
    Membre confirmé Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Par défaut
    Mon bean dont se sert l'action du formulaire :
    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
     
    public class FormulaireCreationVoitureBean extends ActionForm {
        private String nom = null;
        private String modele = null;
        private String annee = null;
        private String kilometrage = null;
     
        public String getNom() {
            return nom;
        }
        public String getModele() {
            return modele;
        }
        public String getAnnee() {
            return annee;
        }
        public String getKilometrage() {
            return kilometrage;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
        public void setModele(String modele) {
            this.modele = modele;
        }
        public void setAnnee(String annee) {
            this.annee = annee;
        }
        public void setKilometrage(String kilometrage) {
            this.kilometrage = kilometrage;
        }
     
        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
            ActionErrors erreurs = new ActionErrors();
            if (nom == null || nom.trim().equals("")) {
                erreurs.add("nomvide", new ActionMessage("voiture.formulaire.nom.vide"));
            }
            if (modele == null || modele.trim().equals("")) {
                erreurs.add("modelevide", new ActionMessage("voiture.formulaire.modele.vide"));
            }
            if (annee == null || annee.trim().equals("")) {
                erreurs.add("anneevide", new ActionMessage("voiture.formulaire.annee.vide"));
            } else {
                if (!annee.matches("^\\s*\\d+\\s*$")) {
                    erreurs.add("anneeincorrect", new ActionMessage("voiture.formulaire.annee.incorrect", annee));
                }
            }
            if (kilometrage == null || kilometrage.trim().equals("")) {
                erreurs.add("kilometragevide", new ActionMessage("voiture.formulaire.kilometrage.vide"));
            } else {
                if (!kilometrage.matches("^\\s*\\d+\\s*$")) {
                    erreurs.add("kilometrageincorrect", new ActionMessage("voiture.formulaire.kilometrage.incorrect", annee));
                }
            }
            return erreurs;
        }
    }
    --> Il n'y a pas le responsable mais normal, il n'est pas setté dans ce formulaire.

    Lorsque je fais Voiture theVoiture = new Voiture ...... j'utilise le POJO Voiture 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
    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
    86
    87
    88
    89
    90
     
    public class Voiture {
        public int id ;
        private String nom;
        private String modele;
        private int annee;
        private long kilometrage;
        private long responsableId;
    //    private Set utilisationVoiture = new HashSet();
    //    private Set entretients = new HashSet();
     
     
        /********************************************************************************
        * Constructeurs 
        ********************************************************************************/
        public Voiture() {
     
        }
        public Voiture(String nom, String modele, int annee, long kilometrage,long responsableId) {
            this.nom = nom;
            this.modele = modele;
            this.annee = annee;
            this.kilometrage = kilometrage;
            this.responsableId = responsableId;
        }
     
        /********************************************************************************
        * Méthodes Get 
        ********************************************************************************/
        public int getId() {
            return id;
        }
        public String getNom() {
            return nom;
        }
        public String getModele() {
            return modele;
        }
        public int getAnnee() {
            return annee;
        }
        public long getKilometrage() {
            return kilometrage;
        }
        public long getResponsableId() {
            return responsableId;
        }
    /*    public Set getUtilisationVoiture() {
            return utilisationVoiture;
        }
        public Set getEntretients() {
            return entretients;
        }
    */
        /********************************************************************************
        * Méthodes Set 
        ********************************************************************************/
        public void setId(int i) {
            id = i ;
        }
        public void setNom(String s) {
            this.nom = s;
        }
        public void setModele(String s) {
            this.modele = s;
        }
        public void setAnnee(int i) {
            this.annee = i;
        }
        public void setKilometrage(long l) {
            this.kilometrage = l;
        }
        public void setResponsableId(long l) {
            this.responsableId = l;
        }
    /*    public void setUtilisationVoiture(Set s) {
            this.utilisationVoiture = s;
        }
        public void setEntretients(Set s) {
            this.entretients = s;
        }
      */  
        /********************************************************************************
        * Méthodes d'affichages
        ********************************************************************************/
        public String toString() {
            return("\n\n\n----------------------------------------\n Nom: " + nom + " \n Modèle : " + modele + " \nAnnée : " + annee +  " \n Kilométrage : " + kilometrage +  " \n Responsable : " + responsableId + "\n----------------------------------------");
        }
     
    }
    Une idée?

  4. #4
    Membre confirmé Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Par défaut
    En fait autant pour moi : rien à voir.

    J'ai mappé le responsable en int dans mon fichier de mapping et en long dans mon POJO. C'est çà qui le perturbait.

    Par contre, maintenant l'insert est bien réalisé mais res_id = 0 alors que je voudrais qu'il soit NULL.
    Et bien sur dans mon code int responsable = null; ca compile pas.

    Comment puis-je faire?

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Par défaut
    normal avec le type primitif int, il te faut un Integer

  6. #6
    Membre confirmé Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Par défaut
    oui mais dans ma base mysql, le champs res_id créé est par défaut null et j'aimerais bien qu'il le reste.
    C'est possible?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2008, 21h47
  2. Récupérer les valeurs des champs créés dynamiquement
    Par outlawz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/05/2006, 16h32
  3. [Hibernate] Comment ramener les valeurs des tables de ref ?
    Par PamelaGeek dans le forum Hibernate
    Réponses: 9
    Dernier message: 07/02/2006, 23h52
  4. [STRUTS] Valeur des Champs disable s'efface lors d'actions
    Par cosmos38240 dans le forum Struts 1
    Réponses: 5
    Dernier message: 24/11/2005, 16h20
  5. [servlet][tester la valeur des champs récupérés]
    Par maya5 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/05/2004, 10h06

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