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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    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
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Je rappelle que j'utilise hibernate 3 avec mysql 5 comme SGBD

  3. #3
    Expert confirmé
    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
    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
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    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 confirmé
    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
    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
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    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...

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