Bonjour,
Je gére la persistances des données avec JPA sous hibernate et quand je fais un testCase pour vérifier si l'EntityManager marche vraiment je suis confronté à une Exception du genre " Transaction not active ".
sachant que je n'ai pas d'érreur concernant le code !
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 package com.dev.tests; import java.util.Date; import java.util.logging.Logger; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import static org.junit.Assert.assertTrue; import junit.framework.TestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.dev.webmail.metier.entities.User; import com.dev.webmail.metier.entities.Mail; import com.dev.webmail.metier.entities.MailBox; public class PersistanceHorsContainerTest extends TestCase{ private static Logger logger = Logger.getLogger(PersistanceHorsContainerTest.class.getName()); private EntityManagerFactory emFactory; private EntityManager em; public PersistanceHorsContainerTest(String testName) { super(testName); } @Before public void setUp() throws Exception { super.setUp(); try { logger.info("JPA Entity Manager pour tests unitaires "); emFactory = Persistence.createEntityManagerFactory("WebMailEJB"); em = emFactory.createEntityManager(); }catch(Exception e){ e.printStackTrace(); fail("\tException lors de l'instanciation de l'EntityManger "); } } @After public void tearDown() throws Exception { super.tearDown(); logger.info("Fermeture de la couche Hibernate JPA"); if(em != null) em.close(); if(emFactory != null) emFactory.close(); } @Test public void testPersistance() { try{ logger.info("Début de test de la persistance "); em.getTransaction().begin(); logger.info(" Début de la fonction em.getTransaction "); // Test Client User client = new User(); client.setNom("Hassam"); client.setPrenom("Abdelillah"); client.setEmail("madio1213@gmail.com"); client.setPassword("******"); Date aujourdhui = new Date(); long time = aujourdhui.getTime(); java.sql.Date today = new java.sql.Date(time); client.setDateCreation(today); logger.info("Avant Pesist"); em.persist(client); logger.info("Aprés Persist"); assertTrue(em.contains(client)); // Test MailBox MailBox box = new MailBox(); box.setNom("Boite de reception"); // Foreign Key box.setUser(client); em.persist(box); assertTrue(em.contains(box)); Mail mail = new Mail(); mail.setSource("zenzla@hotmail.fr"); mail.setDestination("madio1213@hotmail.com"); mail.setCorpsMessage("Salut, Alors je n'ai pas eu de tes nouvelles depuis trés longtemps comment ça va..!?"); java.sql.Date dateEnvoi = java.sql.Date.valueOf("25-04-2012"); mail.setDateEnvoi(dateEnvoi); // Foreign key mail.setMailBox(box); em.persist(mail); assertTrue(em.contains(mail)); em.getTransaction().commit(); logger.info("Fin du test de persistance de la base de données"); }catch(Exception e) { //em.getTransaction().rollback(); e.printStackTrace(); fail("Exception lors du test de persistance"); } } }
Please je bloque depuis des jours
Partager