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 :

Hibernate + mise à jour d'un enregistrement


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jdev23
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut Hibernate + mise à jour d'un enregistrement
    Salut;
    j'ai voulu mettre à jour un enregistrement de la table user,le code de la fct modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     org.hibernate.Session session = HibernateUtil.currentSession();
    org.hibernate.Query query = session.createQuery("from user as u where u.login='"+d.getLogin()+"'");
    User u= (User)query.list().get(0);            
    org.hibernate.Transaction tx = session.beginTransaction();
    u=d;
    session.save(u) ;
    tx.commit();
    Alors que l'objet "d" est lié aux zones de textes ou normalement l'utilisateur va saisir les nouvelles valeurs de l'enregistrement.

    j'ai essayé avec cette fct mais ça ne marche pas,je sais pas ou j'ai commis l'erreur.

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 30
    Par défaut
    Essaie de commencer la transaction avant d'exécuter ta requête HQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    org.hibernate.Session session = HibernateUtil.currentSession();
    org.hibernate.Transaction tx = session.beginTransaction();
    org.hibernate.Query query = session.createQuery("from user as u where u.login='"+d.getLogin()+"'");
    User u= (User)query.list().get(0);            
    u=d;
    session.save(u) ;
    tx.commit();

  3. #3
    Membre confirmé Avatar de jdev23
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut
    je l'ai fait mais toujours rien

  4. #4
    Membre expérimenté Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Par défaut
    Recopie les valeur de d dans u (pas d'affectation de référence). Sinon il y a fort à parier qu'hibernate insert une nouvelle donnée.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Qu'est ce qui ne marche pas au juste ?
    As-tu une erreur, une log, quelque chose à nous montrer ?

    J'ai déjà repéré une erreur dans ta requête, il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session.createQuery("from User where login = ...");
    Pour bien faire, il serait préférable d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session.createQuery("from User where login = :login").setString("login", d.getLogin());
    Et à priori, je suppose que login est la clé primaire User, il faudrait utiliser l'accès direct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    User u = session.get(User.class, d.login());
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    jdev23, pourquoi tu fais

    ??

    Ca sert à quoi ?

  7. #7
    Membre confirmé Avatar de jdev23
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut
    Merci pour vos réponse,

    j'ai pas de messages d'erreur mais lorsque je clique la première fois sur le bouton modifier,j'ai une exception "violation de la clé primaire,objet deja existe dans la BD" alors lors du deuxième clic la moification se fait correctement.


    pour la ligne u=d; c'est pour affecter les nouvelles valeur à l'enregistrement u,sachant que l'objet d est lié aux zones de textes ou l'utilisateur va saisir les nouvelles valeurs

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/02/2008, 11h35
  2. Mise à jour d'un enregistrement
    Par yagrasdemonde dans le forum Access
    Réponses: 6
    Dernier message: 08/03/2007, 22h32
  3. [Hibernate] mise à jour des éléments des détails
    Par neuromencien dans le forum Hibernate
    Réponses: 9
    Dernier message: 16/02/2007, 14h47
  4. [D7][MySQL4.11][Débutant] Mise à jour d'un enregistrement
    Par birdytech dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/01/2007, 09h53
  5. Mise à jour d'un enregistrement
    Par THkiller dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2006, 14h36

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