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
Partager