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

JSF Java Discussion :

Récuperation du resultat d'une requete HQL dans une DATATABLE


Sujet :

JSF Java

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Récuperation du resultat d'une requete HQL dans une DATATABLE
    Bonjour,
    J'ai cherché une solution à mon problème et je trouve pas, j'ai une requete select dans HQL qui marche bien et qui retourne le résultat que je mais dans une liste mais le problème c'est que j'arrive pas à récuperer les champs retournés dans mes colonnes du datatable, la requete est la suivante:

    record = session.createQuery("select a.libRubFaq as lib, b.question as qst, b.reponse as rep from Rubriquefaq a, Faq b where a.idRubFaq = b.rubriquefaq.idRubFaq").list();

    sachant que recorde est déclaré comme suit:

    private List record = new ArrayList();

    et dans la page jsp j'ai le code suivant:

    <h:dataTable border="1" binding="#{Faq.data}" value="#{Faq.record}" var="info" cellspacing="4" >

    <h:column>
    <f:facet name="header">
    <h:outputText value="#" />
    </f:facet>
    <h:selectBooleanCheckbox binding="#{Faq.check}" />
    </h:column>

    <h:column>
    <f:facet name="header">
    <h:outputText value="Rubrique" />
    </f:facet>
    <h:outputText value="#{info.lib}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Question" />
    </f:facet>
    <h:outputText value="#{info.qst}" />
    </h:column>

    <h:column>
    <f:facet name="header">
    <h:outputText value="Réponse" />
    </f:facet>
    <h:outputText value="#{info.rep}"/>
    </h:column>
    </h:dataTable>


    en execution, j'obtiens l'erreur suivante:

    javax.servlet.ServletException: Cannot get value for expression '#{info.data.lib}'
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:121)
    org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)


    cause mère

    javax.faces.FacesException: Cannot get value for expression '#{info.data.lib}'
    org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:421)
    org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234)
    org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:107)
    org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)


    Merci pour votre aide

  2. #2
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Je rappelle que j'utilise hibernate 3 avec mysql 5 comme SGBD

  3. #3
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Je n'ai pas de réponse exacte pour ton problème (quoi que je pense que ça provient du type de retour dynamique de ta requete HQL).

    Ce que je te propose c'est de modifier ta requete pour quelle retourne une liste de pojos réguliers (tes DTOs), du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select a from RubriqueFaq a where ...

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse Modjo, mais je dois récuper des champs dans plusieurs tables (ici 2 seulement reliées par une relation one-to-many). le problème persiste lorsque je veux accéder avec ta méthode à un champ autre que la clé étrangére dans mon cas le "libRubFaq".

  5. #5
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Je comprends ce que tu veux faire, l'exemple que je t'ai donné etait juste pour montrer que la requete retourne un DTO de base.

    Dans ton cas, je te conseille de reconsulter la réference du HQL, tu y trouveras certainement ton bonheur (on y traite le cas de type de retour composite etc.)

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    J'ai consulter la Doc de HQL mais sans aucun résultat, je teste ma requête dans un éditeur HQL elle marche parfaitement, mais le probleme c'est que j'arrive pas à manipuler le retour de session.createQuery("... lorsqu'il s'agit d'un select depuis plusieurs tables!
    Help pls...

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Je relance la question, puisque je suis toujours la ou j'étais, comment faire pour récuperer le résultat d'une requete HQL dans des éléments d'une DATATABLE, ou quel est la nature des objets de retour d'une requete HQL???
    Help please

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Points : 514
    Points
    514
    Par défaut
    tu récupére bien une liste. A partir de la je ne vois pas pourquoi ça pose des difficultés

  9. #9
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous,
    c'est vrai je récupére une lise mais pour acceder à une valeur j'ai une erreur: value not found, ça dans le cas ou je mais un select ou je récupere depuis 2 tables, exemple:
    "from Faq a, Rubriquefaq b where Faq.rubriquefaq.idRubFaq=RubriqueFaq.idRubFaq"

    c'est pas un problème d'alias parceque j'ai testé sans et ça n'a encore pas marché! j'espère que je me suis bien compris shivan, merci pour ton aide! à vous...

Discussions similaires

  1. extraire le jour dans une requete sql dans une colone de type date
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 17/04/2011, 21h42
  2. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  3. comment remplacer les resultat NULL dans une requete HQL
    Par Rambler dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/08/2007, 16h55
  4. Réponses: 2
    Dernier message: 25/04/2007, 14h56
  5. Réponses: 3
    Dernier message: 13/04/2007, 11h02

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