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: update des tables


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut Hibernate: update des tables
    Bonjour à tous,
    J'ai une appli avec:
    Hibernate 3
    Spring 3.0.5
    Maven

    J'ai mon fichier DAO monDAO.java avec ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void updatePersonnel(Personnel personnel);
    et le fichier monDAOHibernateImpl avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void updatePersonnel(Personnel personnel)
    	{
    		sessionFactory.getCurrentSession().merge(personnel);
    	}
    Lorsque un utilisateur valide un formulaire de modification, je fais passer ce controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @RequestMapping(value="/editPersonnel", method=RequestMethod.POST)
    	public String update(@ModelAttribute("editPersonnel") Personnel personnel, BindingResult result, SessionStatus status)
    	{
    		monDAO.updatePersonnel(personnel);
    		status.setComplete();
    		return "redirect:/monappli/personnel";
    	}
    Mais à chaque modification, hibernate fais un 'INSERT INTO' au lieu d'un 'UPDATE'
    Quelqu'un à t-il une idée?
    Merci d'avance

  2. #2
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    Si hibernate fait un "insert", cela veut dire que ton objet n'est pas persisté.
    Par exemple si je fais un new Personnel(), hibernate insérera une nouvelle ligne dans la base.
    Par contre, si tu charge ton objet depuis le Dao et que tu le mets a jour, là hibernate fera un update.

    Il faudrait voir si l'objet que tu manipule est persisté (d'où et comment il est chargé) et vérifier s'il existe en base avant son enregistrement (l'update que tu fais).
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    Je sais pas vraiment comment faire ça, mais voila comment j'ai chargé mon objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	@RequestMapping(value="/editPersonnel", method=RequestMethod.GET)
    	public ModelAndView edit(@RequestParam("id")Integer id)
    	{
    		ModelAndView mav = new ModelAndView("personnel/edit");
    		Personnel personnel = monDAO.getPersonnelById(id);
    		mav.addObject("editPersonnel", personnel);
    		return mav;
    	}
    où getPersonnelById est décrite dans monDAOHibernateImpl.java comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Personnel getPersonnelById(int id)
    	{
    		return (Personnel) sessionFactory.getCurrentSession().get(Personnel.class, id);
    	}
    L'objet se charge bien dans le formulaire de modification, et c'est bien rempli avec les bonnes valeurs, mais à la validation il me rajoute un enregistrement
    Que dois-je faire?
    Merci

  4. #4
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    Vérifie l’égalité des deux valeurs de l'id (au chargement du dao et à l'update) et vois si c'est le même objet.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    ça marche, et c'est grâce à toi slim, merci beaucoup, j'ai vérifié les IDs comme tu me l'a demandé, et j'ai trouvé que mon id était à null lors de l'update, en y remédiant à ça, ça a marché.
    Merci encore.

  6. #6
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    De rien.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/07/2014, 16h16
  2. Problème update des tables
    Par PC81 dans le forum VBA Access
    Réponses: 9
    Dernier message: 15/04/2008, 11h10
  3. [Hibernate] Ajouter des tables à partir du code
    Par oughlad dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/05/2006, 11h17
  4. [Hibernate] Comment ramener les valeurs des tables de ref ?
    Par PamelaGeek dans le forum Hibernate
    Réponses: 9
    Dernier message: 07/02/2006, 23h52
  5. [HIBERNATE] Création des tables
    Par Solovely dans le forum Hibernate
    Réponses: 7
    Dernier message: 19/10/2005, 19h05

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