Bonjour à tous,
J'ai un petit souci en ce moment avec hibernate. J'utilise la version 3 lié à une base de données mysql 5.
Le problème est que lorsque j'insère un objet en base de données son id n'est pas mis à jour. Or à ce que j'ai compris cela devrait se faire non? Voici mon code d'insertion:
L'insertion se fait bien. Malheureusement lorsque je veux récupérer l'objet que je viens d'insérer (lignes en rouge) hibernate n'y arrive pas parce que l'id est à null. Comment faire?
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 Speaker j = new Speaker("Jacky"); Event e = new Event("Event 1", j); Transaction tr = null; Session session = null; try { session = getSessionFactory().openSession(); tr = session.beginTransaction(); //session.save(j); session.saveOrUpdate(e); session.flush(); tr.commit(); session.refresh(e); log.debug("ID Event = "+ e.getId()); e = (Event)session.load(Event.class, e.getId()); log.info(e); } catch (HibernateException ex) { if (tr != null) tr.rollback(); throw ex; } finally { if (session != null) session.close(); } factory.close();
Mon id est généré grâce à une stratégie native. J'ai essayé avec identity sans succès.... Je ne pense pas que ca vienne de là.
Merci d'avance pour votre aide.
EDIT: A ce que j'ai pu constater, l'id est retourné par la méthode save (pas par la méthode saveOrUpdate) mais hibernate met normalement à jour de lui-même l'id dans l'objet persisté non?
Partager