Bonjour,
Je suis en ce moment sur le développement d'une application Java utilisant la technologie des JPA et Bean.

Je possède une 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
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
package com.coucou.entity;
 
import java.io.Serializable;
import java.lang.String;
import java.util.Collection;
 
import javax.persistence.*;
import javax.validation.constraints.*;
 
import com.coucou.utils.Cryptography;
 
@Entity
@Table(name = "User")
public class User implements Serializable {
	private static final int KEY_LENGTH = 30;
 
	@Id
	@GeneratedValue
	private int id;
	@Column(nullable = false, unique = true, length = 64)
	@NotNull
	@Size(min = 3, max = 64)
	private String username;
	@Column(nullable = false, length = 32)
	@NotNull
	@Size(max = 32)
	private String passwd;
	@Column(unique = true, nullable = false, length = 64)
	@NotNull
	@Size(max = 64)
	private String clientKey;
	@Column(unique = true, nullable = false, length = 64)
	@NotNull
	@Size(max = 64)
	private String serverKey;
	@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval= true)
	private Collection<Category> categories;
	private static final long serialVersionUID = 1L;
 
	public User() {
		super();
 
		clientKey = Cryptography.generateKey(KEY_LENGTH);
		serverKey = Cryptography.generateKey(KEY_LENGTH);
	}   
 
	public int getId() {
		return this.id;
	}
 
	public void setId(int id) {
		this.id = id;
	}   
 
	public String getUsername() {
		return this.username;
	}
 
	public void setUsername(String username) {
		this.username = username;
	}   
 
	public String getPasswd() {
		return this.passwd;
	}
 
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}   
 
	public String getClientKey() {
		return this.clientKey;
	}
 
	public String getServerKey() {
		return this.serverKey;
	}
 
	public Collection<Category> getCategories() {
		return this.categories;
	}
 
	public void setCategories(Collection<Category> categories) {
		this.categories = categories;
	}
}
Une remote bean avec la fonction getUser() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
@Stateless(mappedName = "ejb/stateless/User")
@TransactionAttribute(value = TransactionAttributeType.REQUIRED)
public class UserBean implements UserLocal, UserRemote {
	@PersistenceContext(unitName = "coucouPU")
	private EntityManager em;
 
	@Override
	public User getUser(int id) {
		return em.find(User.class, id);
	}
}
Tout est simple. Mais lorsque j'appelle cette fonction depuis une application cliente remote, elle me renvoie bien une instance User quand je lui passe une bonne id mais tous ses attributs sont des pointeurs null.
Ainsi toutes les manipulations sur son username, password... me feront des NullPointerException.
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
user.getUsername().equals("...");
J'ai beau cherché, je ne comprends pas pourquoi il ne m'initialise pas les attributs par les valeurs se trouvant dans la table. Mon entity est pourtant Serializable. Une idée?