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

Wildfly/JBoss Java Discussion :

[Hibernate] saveOrUpdate / Merge


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre à l'essai
    Profil pro
    Apprenti Expert en informatique et système d'information
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Expert en informatique et système d'information

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Points : 21
    Points
    21
    Par défaut [Hibernate] saveOrUpdate / Merge
    Bonjour à toutes et à tous,

    Désolé si je me trompe de section

    Voila j'ai un petit souci que je n'arrive pas à résoudre concernant l'utilisation de saveOrUpdate/merge.

    Débutant dans le domaine, je souhaite pouvoir manipuler des objets avec la session sans forcément savoir lesquels (mon application est configurée par les utilisateurs et "ont la main" sur ce qui devra être enregistré en base)

    Voici les exemples tout bêtes qui me servent de test
    (Si vous ne comprenez pas je pourrais placer le code qui me bloque mais j'espère que ces simples exemples suffiront )

    Avec le saveOrUpdate
    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
     
    	public static void main(String[] args) {
    		Session session = HibernateUtil.currentSession();
    		Transaction tx = session.beginTransaction();
     
    		Consommation c1 = new Consommation();
    		c1.setNumeroLigne(612345678);
    		c1.setAnnee(2012);
    		c1.setMois(03);
    		c1.setCout((float)10);
     
    		session.saveOrUpdate(c1);
    		tx.commit();
    		session.clear();
     
    		Consommation c2 = new Consommation();
    		c2.setNumeroLigne(612345678);
    		c2.setAnnee(2012);
    		c2.setMois(03);
    		c2.setMateriel("Iphone");
     
     
    		session.saveOrUpdate(c2);
     
     
    		tx.commit();
     
     
    		HibernateUtil.closeSession();
    	}

    Avec le merge
    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
     
    	public static void main(String[] args) {
    		Session session = HibernateUtil.currentSession();
    		Transaction tx = session.beginTransaction();
     
    		Consommation c1 = new Consommation();
    		c1.setNumeroLigne(612345678);
    		c1.setAnnee(2012);
    		c1.setMois(03);
    		c1.setCout((float)10);
     
    		session.saveOrUpdate(c1);
    		tx.commit();
     
    		Consommation c2 = new Consommation();
    		c2.setNumeroLigne(612345678);
    		c2.setAnnee(2012);
    		c2.setMois(03);
    		c2.setMateriel("Iphone");
     
    		try {
    			session.saveOrUpdate(c2);
    		} catch (NonUniqueObjectException e) {
    			// TODO: handle exception
    			session.merge(c2);
    		}
     
     
     
    		tx.commit();
    		HibernateUtil.closeSession();
    	}

    Dans les 2 cas je perds l'information "cout".

    Comment puis-je faire pour que le saveOrUpdate fasse la comparaison avec ce qu'il y à en base et ne remplace pas les données présente par une donnée nulle ?

    En espérant avoir été clair.
    Adns

  2. #2
    Membre à l'essai
    Profil pro
    Apprenti Expert en informatique et système d'information
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Expert en informatique et système d'information

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Points : 21
    Points
    21
    Par défaut Contournement
    Merci pour ceux qui ont pris le temps de lire mon message, mais j'ai finalement changé de stratégie.

    J'insère mes objets au fur et à mesure dans une liste, si celui-ci existe je fais un "merge" entre les 2, puis à la fin le boucle sur ma liste pour enregistrer en BDD.

    Amicalement.
    Adns

Discussions similaires

  1. méthode hibernate saveorUpdate buguée?
    Par Palsajicoco dans le forum Hibernate
    Réponses: 0
    Dernier message: 08/06/2011, 13h10
  2. merge hibernate bizarre
    Par bouclette dans le forum Hibernate
    Réponses: 0
    Dernier message: 20/04/2009, 17h51
  3. SaveOrUpdate (hibernate) Linq
    Par ahmedmido dans le forum Linq
    Réponses: 1
    Dernier message: 05/11/2008, 17h16
  4. Hibernate : merge() avec une clé composée
    Par Dr_GreenThumb dans le forum Hibernate
    Réponses: 4
    Dernier message: 25/06/2008, 16h00
  5. Hibernate 3 : HibernateTemplate.saveOrUpdate
    Par Ho(c)ine. dans le forum Hibernate
    Réponses: 11
    Dernier message: 03/04/2007, 09h41

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