Bonjour,

Je réalise un projet de boite mail et je rencontre un problème au niveau de la persistance de mes objets :

Box (classe mère)
------>Mailbox(classe fille)
------>Newsbox(classe fille)

Message(classe)

En gros je réalise une liaison avec des entités :

Une box est soi une newsbox(box de groupe) ou mailbox(box de personne), chaque mailbox peut avoir plusieurs message.

Classe Box

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
 
@Entity
@Table
public class Box implements IBox, Serializable{
 
 
 
	@PersistenceContext(unitName="pu1")
	private EntityManager em;
 
	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
	int id;
	String name;
 
	@OneToMany(cascade = ALL, mappedBy="box",targetEntity=Message.class)
	private Collection<Message> messages = new ArrayList<Message>();
 	public Collection<Message> getMessages() {
		return messages;
	}
	public void setMessages(Collection<Message> messages) {
		this.messages = messages;
	}
 
 
	public int getId() {
		return id;
	}
 
 
	public void setId(int id) {
		this.id = id;
	}
 
 
	public String getName() {
		return name;
	}
 
 
	public void setName(String name) {
		this.name = name;
	}

Classe Message


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
 
@Stateless(name="box/Message")
@Entity
@Table
public class Message implements Serializable {
	@PersistenceContext(unitName="pu1")
	private EntityManager em;
	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
	int id;
	String pfrom;
	String pto;
	String date;
	String subject;
	String body;
	boolean pread;
 
	@ManyToOne
	@JoinColumn(name="BOX_ID",nullable=false)
	private Box box;
	public Box getBox() {
		return box;
	}
	public void setBox(Box box) {
		this.box = box;
	}
 
 
 
 
	public int getId() {
		return id;
	}
 
	public void setId(int id) {
		this.id = id;
	}
 
	public String getPfrom() {
		return pfrom;
	}
 
	public void setPfrom(String pfrom) {
		this.pfrom = pfrom;
	}
 
	public String getPto() {
		return pto;
	}
 
	public void setPto(String pto) {
		this.pto = pto;
	}
 
	public String getDate() {
		return date;
	}
 
	public void setDate(String date) {
		this.date = date;
	}
 
	public String getSubject() {
		return subject;
	}
 
	public void setSubject(String subject) {
		this.subject = subject;
	}
 
	public String getBody() {
		return body;
	}
 
	public void setBody(String body) {
		this.body = body;
	}
 
	public boolean isPread() {
		return pread;
	}
 
	public void setPread(boolean pread) {
		this.pread = pread;
	}
Classe Mailbox


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
 
@Stateless(name="box/MailBox")
@Entity
@Table
public class MailBox extends Box implements IMailBox, Serializable {
 
 
	@PersistenceContext(unitName="pu1")
	private EntityManager em;
 
 
	public MailBox() {
		super();
		// TODO Auto-generated constructor stub
	}
La table se met bien en place mais par contre lorsque que je crée un message le champ ID_BOX(clé étrangère) dans la table message se met NULL
http://www.imagup.com/data/1114091298.html


Merci d'avance de votre aide