Bonjour,
Je suis en train de m'arracher le peu de cheveux qu'il me reste !!!
J'ai une méthode qui crée ou modifie une table, selon si on lui envoit null ou un objet existant.
A la fin je fais un session.save suivi d'un commit, comme d'habitude devrais-je dire.... sauf que là, au lieu de mettre à jour mon enregistrement, il est dupliqué..... je ne comprends pas pourquoi ....
Quelqu'un a une idée ????

voici ma classe : que j'appelle d'une manière très classique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
FicheCabinet ficheCab = new FicheCabinet(ISOCIAL.this);
            ficheCab.afficher();
J'ai supprimé les méthodes qui ne sont pas utiles, comme la partie graphique.
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
public class FicheCabinet extends JDialog 
{
 public FicheCabinet(Frame owner)
    {
  super(owner);
        session = HibernateUtil.currentSession();
        this.setResizable(false);
        createPanel();
        try
        {
            ISOCIAL.mCabinet = ISOCIAL.ExisteCabinet();
            afficherCabinet(ISOCIAL.mCabinet);
        } catch (Exception e1)
        {
            e1.printStackTrace();
        }   
    }
 
    private void afficherCabinet(Icabinet pCabinet)
    {
        mtfRaisonSoc.setText(pCabinet.getRaisonSociale());
        mtfAdresse1.setText(pCabinet.getAdresse1());
        mtfAdresse2.setText(pCabinet.getAdresse2());
        mtfCodePostal.setText(pCabinet.getCodePostal());
        mtfVille.setText(pCabinet.getVille());
        mtfTel.setText(pCabinet.getTelephone());
        mtfFax.setText(pCabinet.getFax());
        mtfCourriel.setText(pCabinet.getCourriel());
 
        Blob blob = pCabinet.getLogo();
        try
        {
            byte[] lImage = blob.getBytes((long)1,new Long(blob.length()).intValue());
            mlabPicLogo.setIcon(new ImageIcon(lImage));
 
        } catch (Exception ex1)
        {
            ex1.printStackTrace();
        }
        pack();
        setLocationRelativeTo(null);
    }
 
 public int afficher() 
 {
  ISOCIAL.mISOCIAL.testArchivage();
  this.setVisible(true);
  return mResult;
 }
 
 public Insets insets()
    {
        return new Insets(35, 10, 10, 10);
    }
 
 class EcouteOK implements ActionListener 
    {
  public void actionPerformed(ActionEvent e) 
        {
            boolean okSaisie = false;
            boolean unSeulMessage = true;
            if ((mtfRaisonSoc.getText().trim().equals("")) && unSeulMessage)
            {
                unSeulMessage = false;
                JOptionPane.showMessageDialog(null,"<html>Une valeur pour la Raison sociale<p>" +
                        "doit être rentrée", "Un champ n'est pas rempli", JOptionPane.WARNING_MESSAGE);
            }
            if  ((mtfAdresse1.getText().trim().equals("")) && unSeulMessage)
            {
                unSeulMessage = false;
                JOptionPane.showMessageDialog(null,"<html>Une valeur pour l'adresse<p>" +
                        "doit être rentrée", "Un champ n'est pas rempli", JOptionPane.WARNING_MESSAGE);
            }
            if ((mtfCodePostal.getText().trim().equals("")) && unSeulMessage) 
            {
                unSeulMessage = false;
                JOptionPane.showMessageDialog(null,"<html>Une valeur pour le code postal<p>" +
                        "doit être rentrée", "Un champ n'est pas rempli", JOptionPane.WARNING_MESSAGE);
            }
            if ((mtfVille.getText().trim().equals("")) && unSeulMessage)
            {
                unSeulMessage = false;
                JOptionPane.showMessageDialog(null,"<html>Une valeur pour la Ville<p>" +
                        "doit être rentrée", "Un champ n'est pas rempli", JOptionPane.WARNING_MESSAGE);
            }
            if ((mtfTel.getText().trim().equals("")) && unSeulMessage)
            {
                unSeulMessage = false;
                JOptionPane.showMessageDialog(null,"<html>Une valeur pour le téléphone<p>" +
                        "doit être rentrée", "Un champ n'est pas rempli", JOptionPane.WARNING_MESSAGE);
            }
            unSeulMessage = true;
            if (!(mtfRaisonSoc.getText().trim().equals("")) && !(mtfAdresse1.getText().trim().equals(""))
                && !(mtfCodePostal.getText().trim().equals("")) && !(mtfVille.getText().trim().equals(""))
                && !(mtfTel.getText().trim().equals("")))
            {
                okSaisie = true;
            }
            if (okSaisie)
            {
                try
                {
                    if (ISOCIAL.mCabinet == null)
                        ISOCIAL.mCabinet = new Icabinet();
                    écritCabinet(ISOCIAL.mCabinet);
                    ISOCIAL.existeCabinet = true;
                    ISOCIAL.mCabinet = ISOCIAL.ExisteCabinet();
                } catch (Exception e1)
                {
                    e1.printStackTrace();
                }
                mResult = 1;
                setVisible(false);
            }
  }
 }
 
 class EcouteCan implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   mResult = 0;
   setVisible(false);
  }
 }
    private void écritCabinet(Icabinet pCab) throws Exception
    {
        Transaction trans = null;
        try
        {
            trans = session.beginTransaction();
 
            pCab.setRaisonSociale(mtfRaisonSoc.getText());
            pCab.setAdresse1(mtfAdresse1.getText());
            if (!mtfAdresse2.getText().trim().equals(""))
                pCab.setAdresse2(mtfAdresse2.getText());
            pCab.setCodePostal(mtfCodePostal.getText());
            pCab.setVille(mtfVille.getText());
            pCab.setTelephone(mtfTel.getText());
            if (!mtfFax.getText().trim().equals(""))
                pCab.setFax(mtfFax.getText());
            if (!mtfCourriel.getText().trim().equals(""))
                pCab.setCourriel(mtfCourriel.getText());
            if (fileLogo != null)
            {
                Blob blob = Hibernate.createBlob(new FileInputStream(fileLogo));
                pCab.setLogo(blob);
            }
            session.save(pCab);
            trans.commit();
        } catch (Exception exp)
        {
            if (trans != null)
            {
                try
                {
                    trans.rollback();
                } catch (HibernateException he)
                {
                    throw he;                   
                }
            }
            throw exp;          
        } finally
        {
            try
            {
                session.disconnect();
            } catch (HibernateException ex)
            {
                throw new Exception(ex);    
            }
        }
    }