[Hibernate] modification de table
Bonjour,
Je suis en train de m'arracher le peu de cheveux qu'il me reste !!! :aie:
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:
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:
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);
}
}
} |