Bonjour à tous,
je suis en train de jouer un peu avec hibernate (newbie total!) et vaadin (idem) et j'ai un pb d'insertion qui... ne flush pas... un peu paumé sur cette affaire...
L'histoire :
J'execute l'affaire (serveur Glassfish), aucune exception remontée... mon objet contient les bonnes info (avec un id de setté, qui s'incremente automatiquement côté MySql (5.poussières). Seul pb aucune création côté base... le plus marrant je crée des enregistrements manuellement par la console mysql, je relance l'appli et celle-ci met correctement à jour l'id de mon objet en fonction de l'id max de la base!!!!sans me créer d'enregistrement, et toujours aucune exception...
, je sais que j'ai ratté un truc, mais j'arrive pas à mettre le doigt dessus... (de ce que j'ai compris pour mon mapping objet à partir du moment ou j'implémente celui-ci dans ma classe je peux me passer de l'xml de mappage, ce que je préfère cela me permet de limiter et centraliser tout ça, je me trompe???)
une idée de l'origine?, du truc qui manque, une piste... un encouragement... juste un petit signe, svp,..
Mon code :
ma classe de mapping :
ma zone de jeu :
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 @javax.persistence.Entity @javax.persistence.Table (name="utilisateur", schema="gameMode") public class Utilisateur { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") private Integer id; public Integer getId() {return id;} public void setId(Integer id) {this.id = id;} @Column(name="name") private String name; public String getName() {return name;} public void setName(String name) {this.name = name;} @Column(name="password") private String password; public String getPassword() {return password;} public void setPassword(String password) {this.password = password;} @Column(name="roleId") private Integer roleId; public Integer getRoleId() {return roleId;} public void setRoleId(Integer roleId) {this.roleId = roleId;} /* Methode de class */ public String toString(){ return "nom : "+this.name+", id : "+this.id; } }
et mon hibernate.cfg.xml
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 final Window mainWindow = new Window("play with vaadin/hibernate"); Label label = new Label("Hi man!"); mainWindow.addComponent(label); Ejb3Configuration cfg = new Ejb3Configuration(); EntityManagerFactory emf = cfg.configure("hibernate.cfg.xml") .addAnnotatedClass(Utilisateur.class) .buildEntityManagerFactory(); EntityManager em = emf.createEntityManager(); EntityTransaction tx = null; try { tx = em.getTransaction(); tx.begin(); } catch (Exception exc) { if ( tx != null && tx.isActive() ) tx.rollback(); Label exception1 = new Label(exc.toString()); mainWindow.addComponent(exception1); } //SessionFactory sessions = cfg.buildSessionFactory(); //Session session = sessions.openSession(); Utilisateur user = new Utilisateur(); user.setName("Test"); user.setPassword("test"); user.setRoleId(0); try{ em.persist(user); em.flush(); //correction temporaire rendant le tout fonctionnel //attention : non finalisé, code à considérer comme instable et non bordé tx.commit(); em.refresh(user); //session.beginTransaction(); //session.save(user); //session.getTransaction().commit(); //session.flush(); //session.close(); } catch(Exception exc){ Label exception2 = new Label(exc.toString()); mainWindow.addComponent(exception2); } finally{ em.close(); } Label newUser = new Label(user.toString()); mainWindow.addComponent(newUser); Label test = new Label("test"); mainWindow.addComponent(test); setMainWindow(mainWindow);
je précise : pas de mot de passe à mon root mysql, j'suis comme ça! à la cool!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <hibernate-configuration> <session-factory name="sessionFactory"> <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/gameMode</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.default_schema">gameMode</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <mapping class="com.example.gameMode.Utilisateur"/> </session-factory> </hibernate-configuration>![]()
Partager