Bonjour je travail sur un projet JEE et j'ai besoin de tester mon session bean depuis un projet clienEJB le probleme est que lorsque je fait un mise à jour ou une suppression tout se passe bien mais lors de l'ajout cette erreur est généré:
voila mon fichier persistence.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Exception in thread "main" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: persistence.Site.utilisateurs, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365) at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:205) at org.hibernate.collection.PersistentBag.add(PersistentBag.java:297) at persistence.Site.ajouterUser(Site.java:57) at test.Test.main(Test.java:70)
voila mon session bean:
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 <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="BaseEcuEJB"> <jta-data-source>java:/BaseEcuDS</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.jdbc.batch_size" value="0"/> </properties> </persistence-unit> </persistence>
et en fin la classe main de test:
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 package services; import java.util.List; import javax.annotation.Resource; import javax.ejb.SessionContext; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import persistence.Site; import persistence.Utilisateur; /** * Session Bean implementation class UsersManagerBean */ @Stateless public class UsersManagerBean implements UsersManagerBeanRemote, UsersManagerBeanLocal { @PersistenceContext(unitName="BaseEcuEJB") private EntityManager em; //@Resource //SessionContext sc; public boolean utilisateurExist(int id) { Utilisateur u = em.find(Utilisateur.class, id); if (u == null) { return false; } else return true; } public Site getSiteById(int id){ Site s = em.find(Site.class, id); return s; } public List<Utilisateur> getUsersList() { Query q=em.createQuery("select u from Utilisateur u"); List users = q.getResultList(); return users; } public void maj(Site site){ em.merge(site); } public void ajout(Utilisateur u) { em.persist(u); System.out.println("***************************User adde*****************************"); } public void supp(Utilisateur u) { em.remove(em.merge(u)); } }
J'ai pas compris cette erreur est du a quoi!!!
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 package test; import java.util.List; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.transaction.SystemException; import org.hibernate.Session; import persistence.Site; import persistence.Utilisateur; import services.UsersManagerBeanRemote; public class Test { public static String ad ="Admin"; public static void main(String[] args) throws Exception { Context jndiContext = new InitialContext(); Object ref = jndiContext.lookup("BaseEcuEAR/UsersManagerBean/remote"); UsersManagerBeanRemote umb = (UsersManagerBeanRemote)ref; Utilisateur u1 = new Utilisateur(); u1.setNom("Bechir"); u1.setPrenom("Hada"); u1.setProfil("Admin"); u1.setPseudo("hadakamatcho"); Site site=umb.getSiteById(1); site.ajouterUser(u1); umb.maj(site); //u1.setSite(null); umb.ajout(u1); //System.out.println(umb.findUser("Bechir").); } }
Partager