EJB Transaction not active
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 ".
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
| 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");
}
}
} |
sachant que je n'ai pas d'érreur concernant le code !
Please je bloque depuis des jours