Bonjour,

Je n'arrive pas à utiliser un projet EJB (déployé dans JBoss) qui contient une annotation @OneToMany .


Configuration : JBoss 4.0.5 ; eclipse Ganymede et mysql comme SGBD.

Concernant les EJB Entity : j'ai créé 2 : "User" et "Privilege". Un Privilege posséde plusieurs User.

Voici le code source de mes EJB Entity :


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
package entities;
 
import java.io.Serializable;
import java.sql.Date;
import java.util.Collection;
 
 
import javax.persistence.*;
 
 
@Entity
 
public class User implements Serializable {
 
	@Id
	@Column(name = "UserID")
	private int  UserID;
 
	private String password;
	private String login;
	private String Name;
	private String gender;
	private String Phone;
	private String Email;
	private String Address;
	private int isActive;
	private Date lastLoginTime;
 
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinColumn(name = "Privilege_idPrivilege")
	private Privilege privilege;
 
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
 
 
 
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return Name;
	}
	public void setName(String name) {
		Name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getPhone() {
		return Phone;
	}
	public void setPhone(String phone) {
		Phone = phone;
	}
	public String getEmail() {
		return Email;
	}
	public void setEmail(String email) {
		Email = email;
	}
	public String getAddress() {
		return Address;
	}
	public void setAddress(String address) {
		Address = address;
	}
	public int getIsActive() {
		return isActive;
	}
	public void setIsActive(int isActive) {
		this.isActive = isActive;
	}
	public void setLogin(String login) {
		this.login = login;
	}
 
	public String getLogin() {
		return login;
	}
 
 
	public int getUserID() {
		return UserID;
	}
 
 
	public void setUserID(int userID) {
		UserID = userID;
	}
 
 
	public void setLastLoginTime(Date lastLoginTime) {
		this.lastLoginTime = lastLoginTime;
	}
 
 
 
	public Date getLastLoginTime() {
		return lastLoginTime;
	}
 
 
 
	public Privilege getPrivilege() {
		return privilege;
	}
	public void setPrivilege(Privilege privilege) {
		this.privilege = privilege;
	}
 
 
}

et
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
package entities;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
 
import javax.persistence.*;
 
 
 
 
 
@Entity
 
public class Privilege implements Serializable{
 
 
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int idPrivilege ;
 
	private int Level ;
 
 
	@OneToMany
	private Collection<User> users = new ArrayList<User>();
 
	public int getIdPrivilege() {
		return idPrivilege;
	}
	public void setIdPrivilege(int idPrivilege) {
		this.idPrivilege = idPrivilege;
	}
	public int getLevel() {
		return Level;
	}
	public void setLevel(int level) {
		Level = level;
	}
 
 
	public Collection<User> getUsers() {
		return users;
	}
 
	public void setUsers(Collection<User> users) {
		this.users = users;
	}
}


Dans l'application de test j'obtient le message d'erreur suivant (sachant que l'app de test : GestionDeStockClient et "search_user" est la methode de l'EJB Session qui retourne l'EJB Entity User ) :


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
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
	at $Proxy0.search_user(Unknown Source)
	at com.et.GestionDeStockClient.main(GestionDeStockClient.java:30)
Caused by: java.lang.ClassNotFoundException: [Ljava.lang.StackTraceElement;
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:50)
	at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:139)
	at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
	at java.io.ObjectInputStream.readClassDesc(Unknown Source)
	at java.io.ObjectInputStream.readArray(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:128)
	at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:66)
	at org.jboss.remoting.transport.socket.SocketClientInvoker.transport(SocketClientInvoker.java:279)
	at org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:143)
	at org.jboss.remoting.Client.invoke(Client.java:525)
	at org.jboss.remoting.Client.invoke(Client.java:488)
	at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:55)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:77)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
	... 2 more
merci