IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

Problème de LazyInitializationException


Sujet :

JPA Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut Problème de LazyInitializationException
    Bonjour, je commence à utiliser les EJB et les Entity... J'ai suivi un tutoriel de ce site pour mettre en place une application Java EE 6 avec Hibernate + GlassFish, mais je n'arrive pas à récupérer les collections qui sont liée à mon entitées. J'ai toujours une problème de LazyInitializationException.

    Dès que je rajoute un @XmlTransient au-dessus de mon getter, le problème disparait, mais ma collection n'est par récupérée. Ma question est de savoir comment faire pour la récupérer ?

    ci-dessous un exemple de mon entité complète et l'erreur apparait lorsque je veux récupérer la List<Sportsaison> sportSaison

    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
     
    /*
     * 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.List;
    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.OneToMany;
    import javax.persistence.Table;
    import javax.xml.bind.annotation.XmlRootElement;
    import javax.xml.bind.annotation.XmlTransient;
     
    /**
     *
     * @author Chatis
     */
    @Entity
    @Table(name = "sport")
    @XmlRootElement
    public class Sport implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Basic(optional = false)
        @Column(name = "IDSport")
        private Integer iDSport;
        @Column(name = "NomSport",length=20)
        private String nomSport;
        @Column(name = "ImgSport",length=50)
        private String imgSport;
     
        @OneToMany(cascade={CascadeType.PERSIST})
        @JoinColumn(name="IDSport", referencedColumnName="IDSport")
        private List<Sportsaison> sportSaisons;
     
        public Sport() {
        }
     
        public Sport(Integer iDSport) {
            this.iDSport = iDSport;
        }
     
        public Integer getIDSport() {
            return iDSport;
        }
     
        public void setIDSport(Integer iDSport) {
            this.iDSport = iDSport;
        }
     
        public String getNomSport() {
            return nomSport;
        }
     
        public void setNomSport(String nomSport) {
            this.nomSport = nomSport;
        }
     
        public String getImgSport() {
            return imgSport;
        }
     
        public void setImgSport(String imgSport) {
            this.imgSport = imgSport;
        }
     
        @XmlTransient
        public List<Sportsaison> getSportSaisons() {
            return sportSaisons;
        }
     
        public void setSportSaisons(List<Sportsaison> sportSaisons) {
            this.sportSaisons = sportSaisons;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (iDSport != null ? iDSport.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 Sport)) {
                return false;
            }
            Sport other = (Sport) object;
            if ((this.iDSport == null && other.iDSport != null) || (this.iDSport != null && !this.iDSport.equals(other.iDSport))) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "ch.plugin.sportreserv.entity.Sport[ iDSport=" + iDSport + " ]";
        }
     
    }
    J'ai lu un peu partout que c'était un problème de session... Mais perso je n'en gère pas.. ou c'est tout gérer automatiquement par JTA (si c'est bien son job....). Si c'est un problème de session, pouvez-vous me dire comment les faire ? et pourquoi les @ManyToOne marche si c'est un vraiment ce problème.

    Vraiment besoin de vous..

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    c'est l'option de persistence par défaut, donc pas besoin de le specifier. Essaie un peu de mettre ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @OneToMany(cascade={CascadeType.PERSIST},fetch= Fetch.EAGER)
        @JoinColumn(name="IDSport", referencedColumnName="IDSport")
        private List<Sportsaison> sportSaisons;
    C'est vrai que le EAGER c'est l'option par défaut pour un chargement d'entités associées instantané, donc ton truc devrait normalement marcher. Mais testes ce que je viens de dire et redire nous.

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par chatis Voir le message
    J'ai lu un peu partout que c'était un problème de session... Mais perso je n'en gère pas.. ou c'est tout gérer automatiquement par JTA (si c'est bien son job....).
    Session != Transaction.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut OK
    Oui merci cela marche comme ça. Mais par contre est-ce vraiment la meilleure solution ? Car j'ai lu partout que d'utiliser des Fetch.EAGER c'est moins bien que du Fetch.LAZY ? N'y a-t'il pas un moyen de le faire avec du LAZY ?

    Sinon pour les sessions, comme je ne les gères pas, faudrait-il le faire ? Si oui comment ? quel est l'avantage ? Sachant que mon IHM est en php et que j'ai un serveur applicatif RESTFul.

    MERCI !

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Tu veux le beurre et son argent là . EAGER et LAZY sont 2 politiques d'extraction de données malheureusement mal utilisées dans beaucoup de projets, et certains en profitent pour critiquer JPA, pourtant c'est simplement une mauvaise utilisation du framework. En fait c'est très bien de vouloir être en LAZY, c'est d'ailleurs ce que je propose dans mes projets, mais voila comment je conçois les choses, si pour une entité A associée à une liste d'entité B, si à 70 % des fois où j'ai besoin de A j'ai aussi besoin de la liste associée à A, alors je suis en EAGER, mais sinon je laisse en LAZY, et je passe par une hql. En d'autres termes étant en LAZY, si je veux A avec sa liste d'elements associée, alors voila mon exemple de requete hql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select a from A a join fetch a.b
    . Tu auras donc tes éléments A avec préchargement de ta liste associée. J'espère avoir été clair.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut OK
    Ok merci ta réponse me convient parfaitement. Mais dans le cas ou je reste en LAZY et que je veux récupérer mes listes associée ou non, il me faudra faire des requêtes différentes c'est ca si j'ai bien compris ?

    donc si je veux rien récupérer je fais : (je suppose qui est équivalent à la fonction em.find(id))
    et si je veux récupérer b je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select a from A a join fetch a.b
    dans un autre cas : si je fais em.persist(a) par exemple, est-ce que automatiquement, il va rajouter les éléments associés si il n'existe pas ou je dois préciser le type CascadeType.PERSIST ?

    Merci de ta précieuse aide

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Oui tu as tout compris, par défaut y'a pas de cascade je crois bien, il faut le spécifier explicitement, ca mange pas de pain de l'écrire.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut Erreur
    Ok alors je reviens car ca ne marche pas le join fetch :-(
    --> donc j'ai enlevé le Fetch.EAGER....

    enfin c'est pas vrai ca marche mais pas entièrement...

    Plusieurs cas :

    je précise rien (exemple : findAll()) avec annotation @XmlTransient.
    --> ca marche mais je ne récupère pas le sportsaison

    si je précise le numero sportSaison avec annotation @XmlTransient
    --> ca marche mais je ne récupère pas le sportsaison

    si je précise le numero sportSaison sans l'annotation
    --> ca marche et je récupère le sportsaison

    et si je précise rien et je mets pas l'annontation
    --> lazyException

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ch.plugin.sportreserv.entity.Terrain.sportSaison, no session or session was closed
    Donc dès le moment ou j'enlève le @XmlTransient ca ne marche pas

    Pourquoi ca ?

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    le findAll c'est une methode écrite par toi? elle s'appuie sur qu'elle requete?
    Moi je te proposais d'être en LAZY, mais d'ecrire la requete objet que je t'ai proposée, elle marche sans aucun doute.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    voir suivant

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    Excuse moi,

    Le findAll vient d'une abstract méthode générée automatiquement par Netbeans quand je créé les entitées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        public List<T> findAll() {
            try{
                //javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
                //cq.select(cq.from(entityClass));
                return getEntityManager().createQuery("from "+ entityClass.getName().toString()).getResultList();
            }catch(Throwable th){
                throw new SportReservExceptions(getClass().getName() + " -> " + th);
            }
        }
    j'ai 2 lignes en commentaires car si j'enlève ca me fait une erreure... Mais ca devrait marcher pareil non ?

  12. #12
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Ah ben voila pourquoi ca marche pas, je m'en doutais bien, cette requete va s'appuyer sur ton mapping en LAZY et donc ne pas precharger les entités associées, qu'as tu fait de la requete de préchargement que j'ai proposée plus haut?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    car si je mets pas les 2 lignes en commentaires,

    j'ai cette erreur quand je fais un findAll()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.getCriteriaBuilder()Ljavax/persistence/criteria/CriteriaBuilder;

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    le join fetch ?

    Je l'ai mis en @NamedQuery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @NamedQuery(name = "SportWithSaison", query = "select s from Sport s join fetch s.sportSaison")

  15. #15
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    T'es bien en LAZY c'est ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public List<T> findAll() {
            try{
                //javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
                //cq.select(cq.from(entityClass));
                return getEntityManager().createQuery("select classeA from TaClasseA classeA join fetch classeA.maClasseBAssociee");
            }catch(Throwable th){
                throw new SportReservExceptions(getClass().getName() + " -> " + th);
            }
        }
    Essaie ca à quelques pb de syntaxe près.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    ok alors j'ai essayé ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        public List<Terrain> getTerrainWithSportSaison(){
            try{
                return em.createQuery("SELECT t FROM Terrain t join fetch t.sportSaison").getResultList();
            }catch(Throwable th){
                throw new SportReservExceptions(getClass().getName() + " -> " + th);
            }
        }
    ca ca marche,

    mais maintenant si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        public List<Terrain> getTerrainWithSportSaison(){
            try{
                return em.createQuery("SELECT t FROM Terrain t").getResultList();
            }catch(Throwable th){
                throw new SportReservExceptions(getClass().getName() + " -> " + th);
            }
        }
    ca me fait une Lazy exception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ch.plugin.sportreserv.entity.Terrain.sportSaison, no session or session was closed

  17. #17
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @OneToMany(cascade={<s>CascadeType.PERSIST</s>})
        @JoinColumn(name="IDSport", referencedColumnName="IDSport")
        private List<Sportsaison> sportSaisons;
    Vire un peu le persist et reteste voir. Je suis un peu surpris par ce comportement

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    nop...

    marche toujours pas..

    voici mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @OneToMany()
        @JoinColumn(name="IDSport", referencedColumnName="IDSport")
        private List<Sportsaison> sportSaisons;
    j'ai essayé tout plein de truc encore aujourd'hui, mais rien n'y fait... je désespère ...

  19. #19
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Fais nous voir le mapping de l'entité inverse.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    voilà :

    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
    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 + " ]";
        }
     
    }
    J'ai des @XmlTransient sur mes collections, mais c'est sur que je les enlèves au final sinon il n'y a pas d'erreur...

Discussions similaires

  1. Problème LazyInitializationException !
    Par tR4x- dans le forum Hibernate
    Réponses: 2
    Dernier message: 02/01/2012, 14h10
  2. Réponses: 0
    Dernier message: 03/11/2010, 17h09
  3. Réponses: 17
    Dernier message: 29/12/2008, 10h29
  4. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo