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 :

Problème de mise à jour des données en base


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Problème de mise à jour des données en base
    Bonjour,

    J'ai un problème avec une mise à jour de données avec Hibernate.

    Voici le code :

    Classe Personne :
    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
    @Entity
    @Table(name="personne")
    public class Personne {
     
        private Integer id;
        private String nom;
        private String prenom;
     
        @Id
        @GeneratedValue
        @Column(name="id", nullable=false)
        public Integer getId() {
            return id;
        }
     
        @Column(name="nom", nullable=false)
        public String getNom() {
            return nom;
        }
     
        @Column(name="prenom", nullable=false)
        public String getPrenom() {
            return prenom;
        }
     
        public void setId(Integer id) {
            this.id = id;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public void setPrenom(String prenom) {
            this.prenom = prenom;
        }
     
        public String toString(){
            StringBuilder sb = new StringBuilder();
            sb.append(id);
            sb.append(" : ");
            sb.append(nom);
            sb.append(" ");
            sb.append(prenom);
            return sb.toString();
        }
     
        public boolean equals(Object o ){
            if(o == null)return false;
            if( ! (o instanceof Personne))return false;
     
            Personne pers = (Personne)o;
            return pers.getId().equals(getId());
        }
     
        public int hashCode(){
            return getNom().hashCode() + getPrenom().hashCode();
        }
    }
    Classe Compte
    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
    @Entity
    @Table(name="compte")
    public class Compte {
     
        private Integer id;
        private String nom;
        private Personne proprietaire;
     
        @Id
        @Column(name="id", nullable = false)
        @GeneratedValue(strategy = GenerationType.AUTO)
        public Integer getId() {
            return id;
        }
     
        @Column(name="nom", nullable = false)
        public String getNom() {
            return nom;
        }
     
        @ManyToOne
        @JoinColumn(name="id_personne", nullable=false, updatable=false)
        public Personne getProprietaire() {
            return proprietaire;
        }
     
        public void setId(Integer id) {
            this.id = id;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public void setProprietaire(Personne proprietaire) {
            this.proprietaire = proprietaire;
        }
     
        public boolean equals(Object o){
            if( o == null) return false;
            if( ! (o instanceof Compte))return false;
     
            Compte cpt = (Compte)o;
            return cpt.getId().equals(id) && cpt.getNom().equals(nom);
        }
     
        public int hashCode(){
            return nom.hashCode();
        }
    }
    Et voici ma fonction de sauvegarde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public Compte save(Compte compte){
            if(compte.getId() == null){
                em.persist(compte);
            }else{
                compte = em.merge(compte);
            }
     
            return compte;
        }
    L'ajout en base de données se passe sans soucis. Cependant lors de la modification, bien que l'objet Compte après l'update soit bon (modification prise en compte), en base de données aucun changement.

    Avez-vous une idée sur le problème ?

    Merci à vous tous.

    Cyril

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bon, en fait je viens de trouver pourquoi . . . J'en ai honte, mais j'avais tout simplement mis un attribut updatable=false dans mon annotation.
    Donc hibernate faisait bien son travail en ne mettant pas à jour ce champs.

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

Discussions similaires

  1. [MySQL] Mise à jour des données à partir d'un formulaire
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/08/2012, 19h56
  2. Réponses: 2
    Dernier message: 16/09/2010, 14h44
  3. [AC-2003] Problème de mise jour à des données avec ADO
    Par @omzo dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/06/2010, 13h25
  4. Problème de mise à jour des données sur un onglet
    Par PenPen_lepingouin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/06/2008, 17h49
  5. [C#][Access]Problème de mise à jour des données
    Par vvvvv dans le forum ASP.NET
    Réponses: 10
    Dernier message: 11/04/2006, 10h43

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