Bonjour,

j'ai un service REST codé comme suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
    @GET
    @Produces({"application/json", "application/xml"})
    public List<Localite> findAll() {
        return localite.findAll();
    }
Qui retourne une liste de localite dont mon entité est :

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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ch.plugin.sportreserv.entity;
 
import ch.plugin.sportreserv.annotation.Type1;
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
 
/**
 *
 * @author Chatis
 */
@Entity
@Table(name = "localite")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "LocaliteByNpaAndPays", query = "SELECT l FROM Localite l WHERE l.npa=:npa AND l.pays =:pays")})
public class Localite implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Basic(optional = false)
    @Column(name = "IDLocalite")
    private Integer iDLocalite;
    @Column(name = "NPA", length = 8)
    private String npa;
    @Column(name = "Localite", length = 30)
    private String localite;
    @Type1
    @ManyToOne
    @JoinColumn(name = "IDPays")
    private Pays pays;
    @Type1
    @OneToMany(mappedBy="localite",cascade= CascadeType.ALL)
    private Set<Adresse> adresses;
 
    public Localite() {
    }
 
    public Localite(Integer iDLocalite) {
        this.iDLocalite = iDLocalite;
    }
 
    public Localite(Integer iDLocalite, String npa, Pays pays) {
        this.iDLocalite = iDLocalite;
        this.npa = npa;
        this.pays = pays;
    }
 
    public Integer getIDLocalite() {
        return iDLocalite;
    }
 
    public void setIDLocalite(Integer iDLocalite) {
        this.iDLocalite = iDLocalite;
    }
 
    public String getNpa() {
        return npa;
    }
 
    public void setNpa(String npa) {
        this.npa = npa;
    }
 
    public String getLocalite() {
        return localite;
    }
 
    public void setLocalite(String localite) {
        this.localite = localite;
    }
 
    public Pays getPays() {
        return pays;
    }
 
    public void setPays(Pays Pays) {
        this.pays = Pays;
    }
 
 
    public Set<Adresse> getAdresses() {
        return adresses;
    }
 
    public void setAdresses(Set<Adresse> adresses) {
        this.adresses = adresses;
    }
 
    public void addAdresse(Adresse adresse){
        adresses.add(adresse);
        adresse.setLocalite(this);
    }
 
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (iDLocalite != null ? iDLocalite.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 Localite)) {
            return false;
        }
        Localite other = (Localite) object;
        if ((this.iDLocalite == null && other.iDLocalite != null) || (this.iDLocalite != null && !this.iDLocalite.equals(other.iDLocalite))) {
            return false;
        }
        return true;
    }
 
    @Override
    public String toString() {
        return "ch.plugin.sportreserv.entity.Localite[ iDLocalite=" + iDLocalite + " ]";
    }
 
}
mais à chaque fois que j'appelle ce service, j'ai une erreur de type LatyInitializeException sur les collections de mon entitées (adresses par exemple) et je ne peux donc jamais les récupérer.

Je sais que mon problème survient lors de la sérialisation de mon objet en JSON ou XML dans ce service car il essaye d'aller rechercher les éléments de ma collection dans ma table. Mais je voudrais qu'il me retourne seulement les ID si je n'ai pas fais un get sur la collection.

Savez-vous comment gérer ca ? ca fait longtemps que je suis bloqué la dessus.