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

Hibernate Java Discussion :

Erreur sur la méthode getAsObject ()


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Homme Profil pro
    éléve ingénieur
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : éléve ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 57
    Points
    57
    Par défaut Erreur sur la méthode getAsObject ()
    Bonjour les jeunes


    Sur un formulaire d'ajout j'ai deux listes déroulante qui liste des objets agence et statut comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        <h:outputText value="Agence"/>
                     <h:selectOneMenu   value="#{showA.agence}" converter="#{ConvertAgence}"> 
                         <f:selectItems value="#{showA.agences}" var="ag" itemValue="#{ag}"     itemLabel="#{ag.nomAgence}" />  
     
                     </h:selectOneMenu>
     
           <h:outputText value="Statut"/>
           <h:selectOneMenu   value="#{showS.statut}" converter="#{ConvertStatut}">
                        <f:selectItems value="#{showS.statuts}" var="st" itemValue="#{st}"     itemLabel="#{st.nomstatut}" /> 
     
           </h:selectOneMenu>

    showA = AgenceController
    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
     
    public class AgenceController {
        private List<Agence> agences = new ArrayList<Agence>();
        private Agence agence ; 
     
        public List<Agence> getAgences() {
            AgenceDAO daoA = new AgenceDAO();
     
            return daoA.getAll();
        }
     
        public void setAgences(List<Agence> agences) {
            this.agences = agences;
        }
     
        public Agence getAgence() {
            return agence;
        }
     
        public void setAgence(Agence agence) {
            this.agence = agence;
        }
     
     
    }

    j'ai ajouté deux classes pour faire de la conversion voici une pour l'objet agence

    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
     
    public  class TestConverter  implements  Converter{
     
     
        private  AgenceDAO agencedao ; 
     
          @Override
        public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
            if (submittedValue == null || submittedValue.isEmpty()) {
                return null;
            }
     
            try {
                return agencedao.getAgenceByNum(Integer.valueOf(submittedValue)); 
            } catch (NumberFormatException e) {
                throw new ConverterException(new FacesMessage(String.format("%s is not a valid agence ID", submittedValue)), e);
            }
        }
     
     
           @Override
        public String getAsString(FacesContext context, UIComponent component, Object modelValue) {
            if (modelValue == null) {
                return "";
            }
     
            if (modelValue instanceof Agence) {
                return String.valueOf(((Agence) modelValue).getNumAgence());
            } else {
                throw new ConverterException(new FacesMessage(String.format("%s is not a valid User", modelValue)));
            }
        }
    }

    quand je clique sur le bouton ajouter une erreur se déclenche en me disant qu'il y a un probleme dans la méthode getAsObject () de la classe TestConverter


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.NullPointerException
    	at Convert.TestConverter.getAsObject(TestConverter.java:40)
    veuillez m'aider à trouver une solution à ce probleme

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Tu as l'erreur dans cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return agencedao.getAgenceByNum(Integer.valueOf(submittedValue));
    Tu as oublié d'injecté ton dao ici ou instancié agencedao.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private  AgenceDAO agencedao ;
    Sinon, la prochaine fois, donne nous plus de details sur les messages d'erreur.

    A+.

  3. #3
    Membre du Club
    Homme Profil pro
    éléve ingénieur
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : éléve ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 57
    Points
    57
    Par défaut
    Salut

    oui effectivement j'ai oublié d'instancier agenceDao

    mais j'ai une erreur qui se déclenche ,cela veut dire quoi ?

    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
     
    GRAVE: failed to lazily initialize a collection of role: entity.Agence.sites, no session or session was closed
    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: entity.Agence.sites, no session or session was closed
    	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
    	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
    	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
    	at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
    	at org.hibernate.collection.PersistentSet.toString(PersistentSet.java:309)
    	at java.lang.String.valueOf(String.java:2826)
    	at java.lang.StringBuilder.append(StringBuilder.java:115)
    	at entity.Agence.toString(Agence.java:136)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:515)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:534)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:792)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:844)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:298)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
    	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
    	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
    	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
    	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
    	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
    	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
    	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 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    	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:662)

    voici la classe agence

    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
     
     
    @Entity
    @Table(name="agence"
        ,catalog="derichebourg"
    )
    public class Agence  implements java.io.Serializable {
     
     
         private Integer numAgence;
         private String nomAgence;
         private String adresse;
         private Set<Site> sites = new HashSet<Site>(0);
         private Set<Contratlocationvehicules> contratlocationvehiculeses = new HashSet<Contratlocationvehicules>(0);
         private Set<Personnel> personnels = new HashSet<Personnel>(0);
     
        public Agence() {
        }
     
     
        public Agence(String nomAgence) {
            this.nomAgence = nomAgence;
        }
        public Agence(String nomAgence, String adresse, Set<Site> sites, Set<Contratlocationvehicules> contratlocationvehiculeses, Set<Personnel> personnels) {
           this.nomAgence = nomAgence;
           this.adresse = adresse;
           this.sites = sites;
           this.contratlocationvehiculeses = contratlocationvehiculeses;
           this.personnels = personnels;
        }
     
        public Agence(Integer numAgence, String nomAgence) {
            this.numAgence = numAgence;
            this.nomAgence = nomAgence;
        }
     
     
     
     
     
         @Id @GeneratedValue(strategy=IDENTITY)
     
        @Column(name="numAgence", unique=true, nullable=false)
        public Integer getNumAgence() {
            return this.numAgence;
        }
     
        public void setNumAgence(Integer numAgence) {
            this.numAgence = numAgence;
        }
     
        @Column(name="nomAgence", nullable=false, length=700)
        public String getNomAgence() {
            return this.nomAgence;
        }
     
        public void setNomAgence(String nomAgence) {
            this.nomAgence = nomAgence;
        }
     
        @Column(name="adresse", length=800)
        public String getAdresse() {
            return this.adresse;
        }
     
        public void setAdresse(String adresse) {
            this.adresse = adresse;
        }
    @ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="agences")
        public Set<Site> getSites() {
            return this.sites;
        }
     
        public void setSites(Set<Site> sites) {
            this.sites = sites;
        }
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="agence")
        public Set<Contratlocationvehicules> getContratlocationvehiculeses() {
            return this.contratlocationvehiculeses;
        }
     
        public void setContratlocationvehiculeses(Set<Contratlocationvehicules> contratlocationvehiculeses) {
            this.contratlocationvehiculeses = contratlocationvehiculeses;
        }
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="agence")
        public Set<Personnel> getPersonnels() {
            return this.personnels;
        }
     
        public void setPersonnels(Set<Personnel> personnels) {
            this.personnels = personnels;
        }

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Citation Envoyé par belhoussaine Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GRAVE: failed to lazily initialize a collection of role: entity.Agence.sites, no session or session was closed
    Visiblement c'est ta collection sites qui n'est jamais initialisé et pour cause aucune session ou bien la session est fermée.
    Je pense que tu ferais mieux d'utiliser les messages sur les champs de ton formulaire comme ça tu auras des messages d'erreur plus clairs et compréhensibles.

  5. #5
    Membre du Club
    Homme Profil pro
    éléve ingénieur
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : éléve ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 57
    Points
    57
    Par défaut
    Salut

    merci pour ta réponse , sinon que dois je faire pour régler cette erreur ?

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Ben,je suppose qu'il y ait une erreur de conversion lorsque tu sélectionnes un élément dans ta liste déroulante c'est pour quoi je t'ai conseillé de mettre les messages de JSF sur tes champs histoire d'avoir des messages très clairs qui puissent nous assurer.Sinon perso,je vois pas comment on peut repérer ton problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Erreur sur la méthode Select
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 11/09/2013, 11h43
  2. [AC-2003] Erreur sur TransferText méthode
    Par PacoE dans le forum VBA Access
    Réponses: 11
    Dernier message: 24/01/2013, 10h53
  3. Erreurs sur les méthodes ApplicationClass et Application
    Par Invité dans le forum Windows Forms
    Réponses: 5
    Dernier message: 29/04/2008, 17h39
  4. [PHPMailer] Erreur sur la méthode isHtml
    Par Curby dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/03/2007, 23h16
  5. [VBA-E]Erreur sur méthode de classeur
    Par vanima dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 20/02/2006, 12h32

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