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

iReport Discussion :

problème du paramètre dans une requete hql


Sujet :

iReport

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Points : 58
    Points
    58
    Par défaut problème du paramètre dans une requete hql
    bonjour
    mon problème est le suivant :
    dans mon rapport j'ai declarer un paramètre param tu type string
    ans mon programme java +hibernate j'ai declarer une Map parametre
    j'ai ajouter mon param a cette map :
    parametre.put("param",val);
    et j'ai passer cette map a jasperprint dans ces argument
    et j'ai rédiger une requete hql pour remplir ce rapport
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select .......from... where champ1=${param}
    mais hibernate declanche une exception a cause du l'acolade {
    et voici la cause du lexception en detail
    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
     
    Caused by: line 1:173: unexpected char: '{'
            at org.hibernate.hql.antlr.HqlBaseLexer.nextToken(HqlBaseLexer.java:278)
            at antlr.TokenBuffer.fill(TokenBuffer.java:69)
            at antlr.TokenBuffer.LA(TokenBuffer.java:80)
            at antlr.LLkParser.LA(LLkParser.java:52)
            at org.hibernate.hql.ast.HqlParser.handleDotIdent(HqlParser.java:312)
            at org.hibernate.hql.antlr.HqlBaseParser.identPrimary(HqlBaseParser.java:3906)
            at org.hibernate.hql.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:861)
            at org.hibernate.hql.antlr.HqlBaseParser.atom(HqlBaseParser.java:3422)
            at org.hibernate.hql.antlr.HqlBaseParser.unaryExpression(HqlBaseParser.java:3200)
            at org.hibernate.hql.antlr.HqlBaseParser.multiplyExpression(HqlBaseParser.java:3082)
            at org.hibernate.hql.antlr.HqlBaseParser.additiveExpression(HqlBaseParser.java:2802)
            at org.hibernate.hql.antlr.HqlBaseParser.concatenation(HqlBaseParser.java:570)
            at org.hibernate.hql.antlr.HqlBaseParser.relationalExpression(HqlBaseParser.java:2586)
            at org.hibernate.hql.antlr.HqlBaseParser.equalityExpression(HqlBaseParser.java:2542)
            at org.hibernate.hql.antlr.HqlBaseParser.negatedExpression(HqlBaseParser.java:2413)
            at org.hibernate.hql.antlr.HqlBaseParser.logicalAndExpression(HqlBaseParser.java:2341)
            at org.hibernate.hql.antlr.HqlBaseParser.logicalOrExpression(HqlBaseParser.java:2296)
            at org.hibernate.hql.antlr.HqlBaseParser.expression(HqlBaseParser.java:2082)
            at org.hibernate.hql.antlr.HqlBaseParser.logicalExpression(HqlBaseParser.java:1858)
            at org.hibernate.hql.antlr.HqlBaseParser.whereClause(HqlBaseParser.java:454)
            at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:708)
            at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
            at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
            at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:238)
            at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
            ... 10 more
    pouvez vous m'indiquer comment peut on résoudre ce problème
    merci d'avance

  2. #2
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Il ne te manque pas un P par hasard dans ta requête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ..... from ... where champ1 = $P{param}

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Points : 58
    Points
    58
    Par défaut
    Bonjour
    merci M jaub pour ton aide
    enfait j'ai commit une erreur lorsque j'ai tappez mon message hiers;
    bon je vais vos envyer le code qui me cause le problème : je crois que cette erreur se lève dans hibernate :
    ma requete complete est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        	String query = "select concat(day(m.E8) ,'/',month(m.E8),'/',year(m.E8))  , "+
        	               "   hour(m.E8)  , count(*)   ,m.E58  "+
        	               " from matabl m  " +
                           " where m.E15='0' " +
                           " and Date(m.E8) = $P{DateGeneration}" +
                           " group by m.E58 " +
                           " order by hour(m.E8) asc ";
    le paramètre DateGeneration est un String (sou cette forme "yyyy-MM-dd")
    dans mon programme j'ai initialiser mon paramètre DateGeneration comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    parameters.put("DateGeneration",dategen)//datgen est un string "yyyy-MM-dd"
    //passage du mon paramètre dans les arguments du jasperPrint
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, ds);//ds est mon datasource
    mais une exception hibernate se declenche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" org.hibernate.QueryException: unexpected char: '{' [select concat(day(m.E8) ,'/',month(m.E8),'/',year(m.E8))  ,    hour(m.E8)  , count(*)   ,m.E58   from xmiep.persistence.jdo.MiepPull m   where m.E15='0'  and Date(m.E8) = $P{DateGeneration} group by m.E58  order by hour(m.E8) asc ]
            at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192)
            at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)

  4. #4
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Où tu as mis le :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     String query = "select concat(day(m.E8) ,'/',month(m.E8),'/',year(m.E8))  , "+
                           "   hour(m.E8)  , count(*)   ,m.E58  "+
                           " from matabl m  " +
                           " where m.E15='0' " +
                           " and Date(m.E8) = $P{DateGeneration}" +
                           " group by m.E58 " +
                           " order by hour(m.E8) asc ";
    ? C'est au niveau de ta classe Java ou c'est au niveau de (Jasper) iReport ?
    Je n'ai jamais travaillé avec Hibernate pour Jasper mais je suis sûr que ta requête n'est pas bonne
    Tout simplement parce qu'une requête paramétrée en Java ne s'écrit pas de cette façon mais plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String query = "select concat(day(m.E8) ,'/',month(m.E8),'/',year(m.E8))  , "+
                           "   hour(m.E8)  , count(*)   ,m.E58  "+
                           " from matabl m  " +
                           " where m.E15='0' " +
                           " and Date(m.E8) = '" + $P{DateGeneration} + "' " +
                           " group by m.E58 " +
                           " order by hour(m.E8) asc ";

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Points : 58
    Points
    58
    Par défaut
    bonjour
    merci M Jaub ;
    effectivement ma requete est dans mon code java
    j'essayer la syntaxe que tu as proposé mais ${DateGeneration} n'est pas une variable java ; c'est au moment du l'execusion que ce paramètre ( c'est un paramètre du iReport) prend une valeur ; car j'ai mis dans les arguments du jasperPrint l'argument parametres contenant la liste des paramètres
    paramètres <"DateGeneration", valeur>

Discussions similaires

  1. Problème dans une requete HQL
    Par cyclopsnet dans le forum Hibernate
    Réponses: 15
    Dernier message: 17/07/2009, 16h43
  2. problème du paramètre dans une requete hql
    Par moha_alnif dans le forum Hibernate
    Réponses: 0
    Dernier message: 01/05/2009, 19h03
  3. Réponses: 1
    Dernier message: 06/03/2007, 11h57
  4. [débutant] problème de condition dans une requete
    Par banker dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 13h52
  5. [VBA-E]problème de date dans une requete
    Par isa21493 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 24/02/2006, 11h45

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