Je veux la classe entité Terrain. Qu'on soit bien d'accord, le souci dont on parle se trouve bien entre et le Terrain et l'entité SportSaison, c'est bien ça? Tu me perds deja un peu j'avoue :oops:
Version imprimable
Je veux la classe entité Terrain. Qu'on soit bien d'accord, le souci dont on parle se trouve bien entre et le Terrain et l'entité SportSaison, c'est bien ça? Tu me perds deja un peu j'avoue :oops:
En faite c'est dans n'importe quelle association @OneToMany ou @ManyToMany.. Ce n'est pas que le problème d'une classe... Je penses qu'on c'est mal compris.. C'est dans n'importe quelle classe ou j'essaye de récupérer un paramètre sous forme de collection ou de set. Donc dans ce cas c'est exactement pareil entre sport et sportsaison que terrain et sportsaison. C'est pour ça que je me dis que c'est peut être un problème de configuration différent et que je ne sais pas lequel !
Encore merci pour tout ce que vous faites.
Alors montre nous le code de 2 classes entité, dont l'une possède une association multiple avec l'autre. comme Terrain et SportSaison associé. Ensuite montre moi aussi ton persistence.xml et ton applicationContext.xml
ok.
Alors voici terrain:
voici sportSaison :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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ch.plugin.sportreserv.entity; import java.io.Serializable; import java.util.Date; import java.util.Set; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; /** * * @author Chatis */ @Entity @Table(name = "terrain") @XmlRootElement @NamedQueries({ @NamedQuery(name = "TerrainBySportSaison", query = "SELECT t FROM Terrain t WHERE t.sportSaison=:IDSaison"), @NamedQuery(name = "TerrainByRecurrence", query = "SELECT t FROM Terrain t WHERE t.recurrences=:IDRecurrence"), @NamedQuery(name = "TerrainByGroupeTerrain", query = "SELECT t FROM Terrain t WHERE t.groupe=:IDGroupe")}) public class Terrain implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Basic(optional = false) @Column(name = "IDTerrain") private Integer iDTerrain; @Column(name = "NomTerrain", length=20) private String nomTerrain; @Column(name = "Abreviation",length=2) private String abreviation; @Basic(optional = false) @Column(name = "HeureOuverture") @Temporal(TemporalType.TIME) private Date heureOuverture; @Basic(optional = false) @Column(name = "HeureFermeture") @Temporal(TemporalType.TIME) private Date heureFermeture; @ManyToMany(mappedBy="terrains", fetch= FetchType.EAGER) private Set<Groupeterrain> groupe; @ManyToMany(mappedBy="terrains") private Set<Recurrence> recurrences; @ManyToMany(cascade={CascadeType.PERSIST}) @JoinTable(name="terrainsportsaison", joinColumns=@JoinColumn(name = "IDTerrain"), inverseJoinColumns = { @JoinColumn(name="IDSport", referencedColumnName="IDSport"), @JoinColumn(name="IDSaison", referencedColumnName="IDSaison")}) private Set<Sportsaison> sportSaison; @OneToMany(mappedBy = "terrain") private Set<Reservation> reservations; public Terrain() { } public Terrain(Integer iDTerrain) { this.iDTerrain = iDTerrain; } public Terrain(Integer iDTerrain, Date heureOuverture, Date heureFermeture) { this.iDTerrain = iDTerrain; this.heureOuverture = heureOuverture; this.heureFermeture = heureFermeture; } public Integer getIDTerrain() { return iDTerrain; } public void setIDTerrain(Integer iDTerrain) { this.iDTerrain = iDTerrain; } public String getNomTerrain() { return nomTerrain; } public void setNomTerrain(String nomTerrain) { this.nomTerrain = nomTerrain; } public String getAbreviation() { return abreviation; } public void setAbreviation(String abreviation) { this.abreviation = abreviation; } public Date getHeureOuverture() { return heureOuverture; } public void setHeureOuverture(Date heureOuverture) { this.heureOuverture = heureOuverture; } public Date getHeureFermeture() { return heureFermeture; } public void setHeureFermeture(Date heureFermeture) { this.heureFermeture = heureFermeture; } public void addGroupe(Groupeterrain groupe){ this.groupe.add(groupe); } public void removeGroupe(Groupeterrain groupe){ this.groupe.remove(groupe); } public void addRecurrence(Recurrence Recurrence){ this.recurrences.add(Recurrence); } @XmlTransient public Set<Reservation> getReservations() { return reservations; } public void setReservations(Set<Reservation> reservations) { this.reservations = reservations; } public Set<Groupeterrain> getGroupe() { return groupe; } public void setGroupe(Set<Groupeterrain> groupe) { this.groupe = groupe; } @XmlTransient public Set<Recurrence> getRecurrences() { return recurrences; } public void setRecurrences(Set<Recurrence> recurrences) { this.recurrences = recurrences; } @XmlTransient public Set<Sportsaison> getSportSaison() { return sportSaison; } public void setSportSaison(Set<Sportsaison> sportSaison) { this.sportSaison = sportSaison; } @Override public int hashCode() { int hash = 0; hash += (iDTerrain != null ? iDTerrain.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Terrain)) { return false; } Terrain other = (Terrain) object; if ((this.iDTerrain == null && other.iDTerrain != null) || (this.iDTerrain != null && !this.iDTerrain.equals(other.iDTerrain))) { return false; } return true; } @Override public String toString() { return "ch.plugin.sportreserv.entity.Terrain[ iDTerrain=" + iDTerrain + " ]"; } }
voici mon persistence.xml :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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ch.plugin.sportreserv.entity; import java.io.Serializable; import java.util.Date; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; /** * * @author Chatis */ @Entity @XmlRootElement @Table(name = "sportsaison") public class Sportsaison implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId protected SportsaisonPK sportsaisonPK; @OneToMany(mappedBy="sportSaison") private List<Possibilite> possibilites; @ManyToMany(cascade={CascadeType.PERSIST}) @JoinTable(name="typereservationsportsaison", joinColumns={ @JoinColumn(name="IDSport", referencedColumnName="IDSport"), @JoinColumn(name="IDSaison", referencedColumnName="IDSaison")}, inverseJoinColumns = @JoinColumn(name = "IDTypeReservation")) private List<Typereservation> typeReservations; @ManyToMany(mappedBy="sportSaison") private List<Terrain> terrains; @Column(name = "InviteAutorise") private Boolean inviteAutorise; @Column(name = "NHeureAutorise") private Boolean nHeureAutorise; @Column(name = "HasRFID") private Boolean hasRFID; @Column(name = "PeriodeReservationAutorise") private Integer periodeReservationAutorise; @Column(name = "TempsUnePeriode") @Temporal(TemporalType.TIME) private Date tempsUnePeriode; @Column(name = "NbreInviteGratuitStart") private Integer nbreInviteGratuitStart; @Column(name = "NbreNHeureStart") private Integer nbreNHeureStart; @OneToMany(mappedBy = "sportSaison") private List<Heureadeduire> heureADeduires; @ManyToMany(mappedBy = "sportSaison") private List<Message> messages; @OneToMany(mappedBy = "sportSaison") private List<Reservation> reservations; public Sportsaison() { } public Sportsaison(SportsaisonPK sportsaisonPK) { this.sportsaisonPK = sportsaisonPK; } public Sportsaison(int iDSport, int iDSaison) { this.sportsaisonPK = new SportsaisonPK(iDSport, iDSaison); } public SportsaisonPK getSportsaisonPK() { return sportsaisonPK; } public void setSportsaisonPK(SportsaisonPK sportsaisonPK) { this.sportsaisonPK = sportsaisonPK; } public Boolean getInviteAutorise() { return inviteAutorise; } public void setInviteAutorise(Boolean inviteAutorise) { this.inviteAutorise = inviteAutorise; } public Boolean getNHeureAutorise() { return nHeureAutorise; } public void setNHeureAutorise(Boolean nHeureAutorise) { this.nHeureAutorise = nHeureAutorise; } public Boolean getHasRFID() { return hasRFID; } public void setHasRFID(Boolean hasRFID) { this.hasRFID = hasRFID; } public Integer getPeriodeReservationAutorise() { return periodeReservationAutorise; } public void setPeriodeReservationAutorise(Integer periodeReservationAutorise) { this.periodeReservationAutorise = periodeReservationAutorise; } public Date getTempsUnePeriode() { return tempsUnePeriode; } public void setTempsUnePeriode(Date tempsUnePeriode) { this.tempsUnePeriode = tempsUnePeriode; } public Integer getNbreInviteGratuitStart() { return nbreInviteGratuitStart; } public void setNbreInviteGratuitStart(Integer nbreInviteGratuitStart) { this.nbreInviteGratuitStart = nbreInviteGratuitStart; } public Integer getNbreNHeureStart() { return nbreNHeureStart; } public void setNbreNHeureStart(Integer nbreNHeureStart) { this.nbreNHeureStart = nbreNHeureStart; } public Boolean getnHeureAutorise() { return nHeureAutorise; } public void setnHeureAutorise(Boolean nHeureAutorise) { this.nHeureAutorise = nHeureAutorise; } @XmlTransient public List<Heureadeduire> getHeureADeduires() { return heureADeduires; } public void setHeureADeduires(List<Heureadeduire> heureADeduires) { this.heureADeduires = heureADeduires; } @XmlTransient public List<Message> getMessages() { return messages; } public void setMessages(List<Message> messages) { this.messages = messages; } @XmlTransient public List<Reservation> getReservations() { return reservations; } public void setReservations(List<Reservation> reservations) { this.reservations = reservations; } @XmlTransient public List<Possibilite> getPossibilites() { return possibilites; } public void setPossibilites(List<Possibilite> possibilites) { this.possibilites = possibilites; } @XmlTransient public List<Terrain> getTerrains() { return terrains; } public void setTerrains(List<Terrain> terrains) { this.terrains = terrains; } @XmlTransient public List<Typereservation> getTypeReservations() { return typeReservations; } public void setTypeReservations(List<Typereservation> typeReservations) { this.typeReservations = typeReservations; } @Override public int hashCode() { int hash = 0; hash += (sportsaisonPK != null ? sportsaisonPK.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Sportsaison)) { return false; } Sportsaison other = (Sportsaison) object; if ((this.sportsaisonPK == null && other.sportsaisonPK != null) || (this.sportsaisonPK != null && !this.sportsaisonPK.equals(other.sportsaisonPK))) { return false; } return true; } @Override public String toString() { return "ch.plugin.sportreserv.entity.Sportsaison[ sportsaisonPK=" + sportsaisonPK + " ]"; } }
mais je n'ai pas de applicationContext.xml qu'est-ce que c'est ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.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_2_0.xsd"> <persistence-unit name="SportReserv-PU" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/sportreserv</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> </properties> </persistence-unit> </persistence>
Je précise également que je n'utilise pas un client Java dans mon application mais un client PHP. Donc pas de Sping ou JSF....
Ce problème persiste toujours et je suis vraiment dans la m.... !!!!!!
J'ai vraiment besoin de l'aide d'un expert Java EE 6 ! Je voudrais qu'il prenne le contrôle de mon ordinateur et qu'il évalue lui-même ce que je fais de faux.
Je suis vraiment pressé par le temps !!
alors j'avance mais je ne sais pas si je suis dans la bonne direction.. JE CHERCHE VRAIMENT DE L'AIDE !!
j'ai trouvé un moyen d'enlever le @XmlTransient mais par contre ca ne change pas grand chose...
voila mon nouveau code :
Alors j'ai enlevé le @XmlTransient sur le getSportsaison() et j'ai changé mon setSportSaison(List<Sportsaison> sportSaison) en setSportSaison(ArrayList<Sportsaison>)Code:
1
2
3
4
5
6
7
8 public List<Sportsaison> getSportSaison() { return sportSaison; } public void setSportSaison(ArrayList<Sportsaison> sportSaison) { this.sportSaison = sportSaison; }
donc en mettant le ArrayList dans le set, je n'ai plus l'erreur de Lazy, Mais par contre mon sportSaison n'est toujours pas mappé en XML et j'ai toujours aucun moyen d'envoyer ce paramètre depuis mon client PHP. Avez-vous une idée ?
J'ai renlevé le ArrayList et mis juste une List
et j'ai essayé ca dans ma méthode RESTFul :
Mais toujours du LazyInitializeException.... JE DESESPERE !!! :-(Code:
1
2
3
4
5
6
7
8
9 @GET @Produces({"application/json", "application/xml"}) public List<Terrain> findAll() { List<Terrain> ts = terrain.findAll(); for(Terrain t : ts) t.getSportSaison(); return ts; }
Ba remets alors le EAGER en attendant, si ca peut te débloquer. C'est pas si dramatique quue ça.
Ouai je l'ai remis.. Mais c'est pas tellement le but de coder "mal" car j'aimerais bien rester professionnel...
Sinon je sais pourquoi le ArrayList ne donnait pas d'erreur... Car mon objet ne serait plus un objet POJO. donc a éviter de mettre des ArrayList à la place des List
Le EAGER n'est pas du mauvais codage, mais de l'optimatisation des requêtes simplement.
ok... Mais je sens déjà que j'aurais des problèmes avec ca quand j'aurais besoin d'appeler SportSaison et ses collections... Enfin on verra...
Techniquement tu n'auras aucun pb, c'est juste comme je t'ai dit que tu tireras des collections dont t'as besoin, mais fonctionnellement et techniquement ca marchera bien.
ok je vais voir ca.. et je reviens en cas de souci.. merci pour tout
Ben voilà, comme je l'avais prédit, le sens inverse ne marche pas !!!
Le cas se produit avec ma classe personne (mais je suis sûr que c'est pareil pour tous, mais actuellement j'ai programmé que c'elle là.)
Je m'explique :
Ci-dessus, ma classe personne. Alors quand je veux ajouter une personne à ma base (@POST), tous ce passe bien. Mais d'une fois que je l'ai ajoutée, je voudrais l'afficher dans une liste de toutes les personnes (@GET).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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ch.plugin.sportreserv.entity; import java.io.Serializable; import java.util.Date; import java.util.List; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; /** * * @author Chatis */ @Entity @Table(name = "personne") @XmlRootElement @NamedQueries({ @NamedQuery(name = "PersonneByNumReservation", query = "SELECT p FROM Personne p, Personnereservation pr WHERE pr.personnereservationPK.numReservation=:NumReservation"), @NamedQuery(name = "PersonneByLangue", query = "SELECT p FROM Personne p WHERE langue=:IDLangue"), @NamedQuery(name = "PersonneByTypeReservation", query = "SELECT p FROM Personne p WHERE p.type=:IDType")}) public class Personne implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Basic(optional = false) @Column(name = "IDPersonne") private Integer iDPersonne; @Column(name = "Titre", length=10) private String titre; @Column(name = "Nom", length=20) private String nom; @Column(name = "Prenom",length=20) private String prenom; @Column(name = "Telephone", length=20) private String telephone; @Column(name = "DateNaissance") @Temporal(TemporalType.DATE) private Date dateNaissance; @Column(name = "aModifieProfil") private Boolean aModifieProfil; @Column(name = "Email", length=50) private String email; @Column(name = "CarteRFID", length=16) private String carteRFID; @ManyToOne(cascade= CascadeType.ALL, fetch= FetchType.EAGER) @JoinColumn(name = "IDLangue") private Langue langue; @OneToMany(mappedBy="personne", cascade= CascadeType.ALL, fetch= FetchType.EAGER) private List<Adresse> adresses; @OneToOne(mappedBy="personne", cascade= CascadeType.ALL, fetch= FetchType.EAGER) private User user; @OneToMany(mappedBy = "personne") private List<Personnereservation> personneReservations; @OneToMany(mappedBy="heureadeduirePK.personne") private List<Heureadeduire> heureADeduires; @ManyToMany @JoinTable(name="typereservationpersonne",joinColumns = @JoinColumn(name = "IDPersonne"), inverseJoinColumns =@JoinColumn(name = "IDTypeReservation")) private List<Typereservation> type; public Personne() { } public Personne(Integer iDPersonne) { this.iDPersonne = iDPersonne; } public Integer getIDPersonne() { return iDPersonne; } public void setIDPersonne(Integer iDPersonne) { this.iDPersonne = iDPersonne; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public Date getDateNaissance() { return dateNaissance; } public void setDateNaissance(Date dateNaissance) { this.dateNaissance = dateNaissance; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getCarteRFID() { return carteRFID; } public void setCarteRFID(String carteRFID) { this.carteRFID = carteRFID; } public Langue getLangue() { return langue; } public void addAdresse(Adresse adresse){ adresses.add(adresse); adresse.setPersonne(this); } public void addType (Typereservation type){ this.type.add(type); } public void setLangue(Langue langue) { this.langue = langue; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @XmlTransient public List<Personnereservation> getPersonneReservations() { return personneReservations; } public void setPersonneReservations(List<Personnereservation> personneReservations) { this.personneReservations = personneReservations; } public List<Heureadeduire> getHeureADeduires() { return heureADeduires; } public void setHeureADeduires(List<Heureadeduire> heureADeduires) { this.heureADeduires = heureADeduires; } public List<Typereservation> getType() { return type; } public void setType(List<Typereservation> type) { this.type = type; } public List<Adresse> getAdresses() { return adresses; } public void setAdresses(List<Adresse> Adresses) { this.adresses = Adresses; } public Boolean getaModifieProfil() { return aModifieProfil; } public void setaModifieProfil(Boolean aModifieProfil) { this.aModifieProfil = aModifieProfil; } public String getTitre() { return titre; } public void setTitre(String titre) { this.titre = titre; } @Override public int hashCode() { int hash = 0; hash += (iDPersonne != null ? iDPersonne.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Personne)) { return false; } Personne other = (Personne) object; if ((this.iDPersonne == null && other.iDPersonne != null) || (this.iDPersonne != null && !this.iDPersonne.equals(other.iDPersonne))) { return false; } return true; } @Override public String toString() { return "ch.plugin.sportreserv.entity.Personne[ iDPersonne=" + iDPersonne + " ]"; } }
Mais voila "LazyInitializeException" sur type et sur heureADeduires. Alors je mets des @XmlTransient sur leur getter et miracle, je peux afficher les personnes.
Maintenant je refais un ajout de personne et hop, une nouvelle erreure de NulPointerException car impossible pour mon server de lire les données de HeureADeduire et TypeReservation car elles ne sont pas mappées dans le xml.
Dernière solution, j'enlève le @XmlTransient et je mets mes paremètre en Fetch.EAGER, et là encore une nouvelle erreur.... :
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 GRAVE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method GRAVE: Exception while preparing the app GRAVE: [PersistenceUnit: SportReserv-PU] Unable to build EntityManagerFactory javax.persistence.PersistenceException: [PersistenceUnit: SportReserv-PU] Unable to build EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:892) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:205) at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:119) at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:213) at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:486) at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:220) at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:166) at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:870) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370) at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067) at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235) at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465) at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:222) at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168) at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:619) Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:94) at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:120) at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:72) at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:55) at org.hibernate.loader.entity.BatchingEntityLoader.createBatchingEntityLoader(BatchingEntityLoader.java:133) at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1898) at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1921) at org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3182) at org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3175) at org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:728) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:357) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:883) ... 36 more GRAVE: Exception while preparing the app : [PersistenceUnit: SportReserv-PU] Unable to build EntityManagerFactory org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:94) at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:120) at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:72) at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:55) at org.hibernate.loader.entity.BatchingEntityLoader.createBatchingEntityLoader(BatchingEntityLoader.java:133) at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1898) at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1921) at org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3182) at org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3175) at org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:728) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:357) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:883) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:205) at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:119) at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:213) at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:486) at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:220) at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:166) at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:870) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370) at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067) at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235) at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465) at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:222) at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168) at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:619)
Alors voila... Je ne sais plus quoi faire !!!!!! S'il vous plait AIDER MOI !!!!!! N'importe quel aide tel qu'elle soit est la bienvenue !!!!!
vous ne pouvez pas avoir 2 EAGERs sur 2 collections de sémantique bag dans la même @Entity…
et LazyInitializationException : c'est un problème de transaction.
On ne voit pas de @Transactional sur vos services : comment gérez-vous les transactions ?
Par Aspect-J ?
montrez la configuration…
Enleve tous les fetch type eager car c'est la valeur par défaut. donc ne mets rien et reteste. Ensuite 2e test tu remplaces les List par des Set
Alors, j'ai testé sans rien du tout (ni @XmlTransient, ni fetch.EAGER) et avec des set comme ci-dessous :
Mais.... non :-(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
137
138
139
140
141
142
143
144
145
146
147
148
149
150 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ch.plugin.sportreserv.entity; import java.io.Serializable; import java.util.Set; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.xml.bind.annotation.XmlRootElement; /** * * @author Chatis */ @Entity @Table(name = "pays") @XmlRootElement public class Pays implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Basic(optional = false) @Column(name = "IDPays") private Integer iDPays; @Column(name = "NomPays", length= 20) private String nomPays; @Column(name = "RegexNPA", length=40) private String regexNPA; @Column(name = "ExempleNPA", length=10) private String exempleNPA; @Column(name = "RegexTelephone", length=70) private String regexTelephone; @Column(name = "ExempleTelephone", length=20) private String exempleTelephone; @Column(name = "InternationalPays", length=3) private String internationalPays; @OneToMany(mappedBy="pays") private Set<Localite> localites; public Pays() { } public Pays(Integer iDPays) { this.iDPays = iDPays; } public Integer getIDPays() { return iDPays; } public void setIDPays(Integer iDPays) { this.iDPays = iDPays; } public String getNomPays() { return nomPays; } public void setNomPays(String nomPays) { this.nomPays = nomPays; } public String getRegexNPA() { return regexNPA; } public void setRegexNPA(String regexNPA) { this.regexNPA = regexNPA; } public String getRegexTelephone() { return regexTelephone; } public void setRegexTelephone(String regexTelephone) { this.regexTelephone = regexTelephone; } public String getInternationalPays() { return internationalPays; } public void setInternationalPays(String internationalPays) { this.internationalPays = internationalPays; } public void addLocalite(Localite Localite){ this.localites.add(Localite); Localite.setPays(this); } public String getExempleNPA() { return exempleNPA; } public void setExempleNPA(String exempleNPA) { this.exempleNPA = exempleNPA; } public String getExempleTelephone() { return exempleTelephone; } public void setExempleTelephone(String exempleTelephone) { this.exempleTelephone = exempleTelephone; } public Set<Localite> getLocalites() { return localites; } public void setLocalites(Set<Localite> localites) { this.localites = localites; } @Override public int hashCode() { int hash = 0; hash += (iDPays != null ? iDPays.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Pays)) { return false; } Pays other = (Pays) object; if ((this.iDPays == null && other.iDPays != null) || (this.iDPays != null && !this.iDPays.equals(other.iDPays))) { return false; } return true; } @Override public String toString() { return "ch.plugin.sportreserv.entity.Pays[ iDPays=" + iDPays + " ]"; } }
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 GRAVE: failed to lazily initialize a collection of role: ch.plugin.sportreserv.entity.Pays.localites, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ch.plugin.sportreserv.entity.Pays.localites, 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.read(AbstractPersistentCollection.java:108) at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186) at com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister.iterator(Lister.java:282) at com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister.iterator(Lister.java:269) at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:133) at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:159) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:344) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:597) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:328) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:498) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:320) at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:249) at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:74) at com.sun.jersey.core.impl.provider.entity.XMLListElementProvider.writeList(XMLListElementProvider.java:133) at com.sun.jersey.core.provider.jaxb.AbstractListElementProvider.writeTo(AbstractListElementProvider.java:169) at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1316) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:619) ATTENTION: StandardWrapperValve[org.netbeans.rest.application.config.ApplicationConfig]: PWC1406: Servlet.service() for servlet org.netbeans.rest.application.config.ApplicationConfig threw exception org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ch.plugin.sportreserv.entity.Pays.localites, 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.read(AbstractPersistentCollection.java:108) at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186) at com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister.iterator(Lister.java:282) at com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister.iterator(Lister.java:269) at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:133) at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:159) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:344) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:597) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:328) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:498) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:320) at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:249) at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:74) at com.sun.jersey.core.impl.provider.entity.XMLListElementProvider.writeList(XMLListElementProvider.java:133) at com.sun.jersey.core.provider.jaxb.AbstractListElementProvider.writeTo(AbstractListElementProvider.java:169) at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1316) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:619)
Sinon vous me dites que je ne peux pas avoir plusieurs type EAGER, mais pourtant de personne j'en ai 3 en fonctions (langue, adresse, user) et ca marche.. c'est quand je mets le 4ème que ca plante.. mais ce n'est pas grave car j'aimerais en avoir 0 des EAGER et tout du Lazy...
Vous me dites également que par défaut c'est EAGER.. Mais vous êtes sûr que c'est pas lazy le défaut ? Sinon pourquoi j'aurais ces erreurs de lazyInitializeException...
Pour ce qui est de mes transactions, elles sont générées automatiquement par JTA. Je n'ai rien fait d'autre que mettre JTA dans mon persistence.xml comme ci-dessous :
Qu'est ce que ca fait cette annotation ? Je n'ai rien trouvé la dessus sur le net...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.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_2_0.xsd"> <persistence-unit name="SportReserv-PU" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/sportreserv</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> </properties> </persistence-unit> </persistence>
A savoir que je n'utilise aucun framework en Java si ce n'est hibernate. la structure de mon projet est : PHP (client) + RESTFul + Manager + DAO + Entité
Merci encore de votre aide et j'espère arrivé au bout de ce problème qui me tient maintenant depuis 2 semaines !
Le type de strategie par défaut c'est EAGER et non LAZY. Que tu mettes EAGER ou rien tu devrais avoir le même comportement normalement, je suis assez surpris par ton env. Essaies de remettre les EAGER et remplace tous les List par des Set, il est bien connu un bug de préchargement avec des List. JTA c'est api JAVA gérant les transactions.
alors bonne nouvelle ! Ca marche avec des EAGER et des set partout... voir personne ci-dessous :
Mais par contre le XML créer me redonne toute la base de données !!! ce n'est pas "vraiment" ce que j'ai besoin dans tous les cas... Car en LAZY si j'ai bien compris, ca va juste rechercher la clé... et si tu veux plus tu fais un GET et ca te redonne un peu plus non ? c'est ca qu'il me faudrait... car la ca descend a plus de 5 niveaux de profondeurs... et ca fait un peu beaucoup...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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ch.plugin.sportreserv.entity; import java.io.Serializable; import java.util.Date; import java.util.Set; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.xml.bind.annotation.XmlRootElement; /** * * @author Chatis */ @Entity @Table(name = "personne") @XmlRootElement @NamedQueries({ @NamedQuery(name = "PersonneByNumReservation", query = "SELECT p FROM Personne p, Personnereservation pr WHERE pr.personnereservationPK.numReservation=:NumReservation"), @NamedQuery(name = "PersonneByLangue", query = "SELECT p FROM Personne p WHERE langue=:IDLangue"), @NamedQuery(name = "PersonneByTypeReservation", query = "SELECT p FROM Personne p WHERE p.type=:IDType")}) public class Personne implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Basic(optional = false) @Column(name = "IDPersonne") private Integer iDPersonne; @Column(name = "Titre", length=10) private String titre; @Column(name = "Nom", length=20) private String nom; @Column(name = "Prenom",length=20) private String prenom; @Column(name = "Telephone", length=20) private String telephone; @Column(name = "DateNaissance") @Temporal(TemporalType.DATE) private Date dateNaissance; @Column(name = "aModifieProfil") private Boolean aModifieProfil; @Column(name = "Email", length=50) private String email; @Column(name = "CarteRFID", length=16) private String carteRFID; @ManyToOne(cascade= CascadeType.ALL, fetch= FetchType.EAGER) @JoinColumn(name = "IDLangue") private Langue langue; @OneToMany(mappedBy="personne", cascade= CascadeType.ALL, fetch= FetchType.EAGER) private Set<Adresse> adresses; @OneToOne(mappedBy="personne", cascade= CascadeType.ALL, fetch= FetchType.EAGER) private User user; @OneToMany(mappedBy = "personne", fetch= FetchType.EAGER) private Set<Personnereservation> personneReservations; @OneToMany(mappedBy="heureadeduirePK.personne", fetch= FetchType.EAGER) private Set<Heureadeduire> heureADeduires; @ManyToMany(fetch= FetchType.EAGER) @JoinTable(name="typereservationpersonne",joinColumns = @JoinColumn(name = "IDPersonne"), inverseJoinColumns =@JoinColumn(name = "IDTypeReservation")) private Set<Typereservation> type; public Personne() { } public Personne(Integer iDPersonne) { this.iDPersonne = iDPersonne; } public Integer getIDPersonne() { return iDPersonne; } public void setIDPersonne(Integer iDPersonne) { this.iDPersonne = iDPersonne; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public Date getDateNaissance() { return dateNaissance; } public void setDateNaissance(Date dateNaissance) { this.dateNaissance = dateNaissance; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getCarteRFID() { return carteRFID; } public void setCarteRFID(String carteRFID) { this.carteRFID = carteRFID; } public Langue getLangue() { return langue; } public void addAdresse(Adresse adresse){ adresses.add(adresse); adresse.setPersonne(this); } public void addType (Typereservation type){ this.type.add(type); } public void setLangue(Langue langue) { this.langue = langue; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Set<Personnereservation> getPersonneReservations() { return personneReservations; } public void setPersonneReservations(Set<Personnereservation> personneReservations) { this.personneReservations = personneReservations; } public Set<Heureadeduire> getHeureADeduires() { return heureADeduires; } public void setHeureADeduires(Set<Heureadeduire> heureADeduires) { this.heureADeduires = heureADeduires; } public Set<Typereservation> getType() { return type; } public void setType(Set<Typereservation> type) { this.type = type; } public Set<Adresse> getAdresses() { return adresses; } public void setAdresses(Set<Adresse> Adresses) { this.adresses = Adresses; } public Boolean getaModifieProfil() { return aModifieProfil; } public void setaModifieProfil(Boolean aModifieProfil) { this.aModifieProfil = aModifieProfil; } public String getTitre() { return titre; } public void setTitre(String titre) { this.titre = titre; } @Override public int hashCode() { int hash = 0; hash += (iDPersonne != null ? iDPersonne.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Personne)) { return false; } Personne other = (Personne) object; if ((this.iDPersonne == null && other.iDPersonne != null) || (this.iDPersonne != null && !this.iDPersonne.equals(other.iDPersonne))) { return false; } return true; } @Override public String toString() { return "ch.plugin.sportreserv.entity.Personne[ iDPersonne=" + iDPersonne + " ]"; } }
Aussi... si j'ai une personne qui est lié a un user avec un fetch.EAGER, et le user est lié à la personne avec un fetch.EAGER ca me fait une erreur de dépendance cyclique :
pour éviter ca, je dois mettre un @XmlTransient sur l'un des 2... donc je pourrais utiliser cette relation que dans un sens.. et pas trop optimal ca....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 GRAVE: The response of the WebApplicationException cannot be utilized as the response is already committed. Re-throwing to the HTTP container javax.ws.rs.WebApplicationException: javax.xml.bind.MarshalException - with linked exception: [com.sun.istack.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML: ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ] -> ch.plugin.sportreserv.entity.User[ iDUser=49 ] -> ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ]] at com.sun.jersey.core.provider.jaxb.AbstractListElementProvider.writeTo(AbstractListElementProvider.java:171) at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1316) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:619) Caused by: javax.xml.bind.MarshalException - with linked exception: [com.sun.istack.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML: ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ] -> ch.plugin.sportreserv.entity.User[ iDUser=49 ] -> ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ]] at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:323) at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:249) at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:74) at com.sun.jersey.core.impl.provider.entity.XMLListElementProvider.writeList(XMLListElementProvider.java:133) at com.sun.jersey.core.provider.jaxb.AbstractListElementProvider.writeTo(AbstractListElementProvider.java:169) ... 33 more Caused by: com.sun.istack.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML: ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ] -> ch.plugin.sportreserv.entity.User[ iDUser=49 ] -> ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ] at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:252) at com.sun.xml.bind.v2.runtime.XMLSerializer.pushObject(XMLSerializer.java:541) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:635) at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:156) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:344) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:700) at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:156) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:344) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:597) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:328) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:498) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:320) ... 37 more ATTENTION: StandardWrapperValve[org.netbeans.rest.application.config.ApplicationConfig]: PWC1406: Servlet.service() for servlet org.netbeans.rest.application.config.ApplicationConfig threw exception javax.ws.rs.WebApplicationException: javax.xml.bind.MarshalException - with linked exception: [com.sun.istack.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML: ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ] -> ch.plugin.sportreserv.entity.User[ iDUser=49 ] -> ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ]] at com.sun.jersey.core.provider.jaxb.AbstractListElementProvider.writeTo(AbstractListElementProvider.java:171) at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1316) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:619) Caused by: javax.xml.bind.MarshalException - with linked exception: [com.sun.istack.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML: ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ] -> ch.plugin.sportreserv.entity.User[ iDUser=49 ] -> ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ]] at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:323) at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:249) at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:74) at com.sun.jersey.core.impl.provider.entity.XMLListElementProvider.writeList(XMLListElementProvider.java:133) at com.sun.jersey.core.provider.jaxb.AbstractListElementProvider.writeTo(AbstractListElementProvider.java:169) ... 33 more Caused by: com.sun.istack.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML: ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ] -> ch.plugin.sportreserv.entity.User[ iDUser=49 ] -> ch.plugin.sportreserv.entity.Personne[ iDPersonne=136 ] at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:252) at com.sun.xml.bind.v2.runtime.XMLSerializer.pushObject(XMLSerializer.java:541) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:635) at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:156) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:344) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:700) at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:156) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:344) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:597) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:328) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:498) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:320) ... 37 more
alors ca ne répond pas "entièrement" à mon problème, mais on est sur la bonne voie.. merci
J'ai enlevé tous les featch.EAGER de mon projet et tous les List de toutes mes entity... Mais j'ai toujours ce problème de LazyInitializeException... Est-il possible de récupérer seulement les ID quand on ne veut rien de plus ?