Bonjour ma question est comme suit :
Je veux savoir comment faire pour retourner l'ID de l'objet que je viens d'inserer dans ma base de données avec hibernate.
Version imprimable
Bonjour ma question est comme suit :
Je veux savoir comment faire pour retourner l'ID de l'objet que je viens d'inserer dans ma base de données avec hibernate.
dans mon insertion j'utlise session.save(objet) comment faire pour que cette méthode me retourne l'ID de l'insertion
Salut,
en faisantCode:objet.getClePrimaire()
je me suis mal exprimer je pense ma demande c'est comment retourner l'id généré par la base de données quand je fait une insertion avec la méthode save() d'hibernate
en faisant un save(), hibernate va remplir le champ correspondant à la clé primaire dans ton objet (enfin si ton mapping est déclaré de cette façon). Donc pour avoir l'id, il te suffit d'accéder à ce champ
au passage, la méthode save() te renvoie l'id
Voila ma méthode pour l'insertion :
il me dise que la session est close .Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 public int saveEtudiant(Etudiant etudiant) { try { org.hibernate.Transaction tx = session.beginTransaction(); session.save(etudiant); tx.commit(); return etudiant.getEtudiantId(); } catch(Exception e) { e.printStackTrace(); return 0; } }
ça c'est un autre problème. A quel moment ouvres tu la session ? de quelle manière ?
Code:
1
2
3
4
5 Session session = null; public EtudiantDaoImp() { this.session = NewHibernateUtil.getSessionFactory().getCurrentSession(); }
Ta session est fermée par le commit de ta transaction.
Si tu veux gérer l'ouverture et la fermeture toi-même tu dois faire :
Pour ceux qui connaissent, quels autres inconvénients a cette méthode que le "simple" fait de devoir fermer la session manuellement ?Code:
1
2
3 public EtudiantDaoImp() { this.session = NewHibernateUtil.getSessionFactory().openSession(); }
Edit: Je ne sais pas si tu fais du J2SE ou du J2EE mais je ne pense pas que ma solution soit la meilleure si tu fais du J2EE