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 :

Erreur avec NamedQuery date


Sujet :

JPA Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 74
    Points : 49
    Points
    49
    Par défaut Erreur avec NamedQuery date
    bonjour




    j'al l'erreur suivante:


    Caused by: org.hibernate.HibernateException: Errors in named queries: prix_prixDuJour


    mon namedquery prix_prixDuJour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        @NamedQuery(name = "prix_prixDuJour", query = "SELECT * FROM prix where date < :dateDuJour order by nr desc limit 1")

    ou est la faute?

    j'avais d'abord utilisé ceci: avec "now()"(à la place de :dateDuJour, mais j'ai changé parce que j'ai pensé que c'etait l'erreur, mais c'est quelque chose d'autre..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        @NamedQuery(name = "prix_prixDuJour", query = "SELECT * FROM prix where date < now() order by nr desc limit 1")
    => le 2em code me donne pas de faute dans MySQL (pourquoi il me donne une erreur dans mon programme?)

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    ok, j'ai résolu pour une partie mes problémes.


    (c'était un erreur de majescule )

    mais mon query me donne 2 résultat (je ne peut qu'avoir 1 résultat)

    [CODE]@NamedQuery(name = "prix_prixDuJour", query = "SELECT * FROM prix where date < :dateDuJour order by nr desc limit 1[CODE]

    dans mysql j'ai un résultat, sur mon site j'ai 2 résultat (il n 'y a 3 données dans cette table, 2 prix avant la date d'aujourd'hui, et un plus tard, et je dois avoir le dernier prix des 2 résultats)
    dans ma classe "prix" j'ai des erreurs en colour jaune (probablement c'est ça la cause)

    (nr => est le "numéro" dans ma table "prix")

    -the order by clause has 'nr DESC' and limit that are not separated by a comma.
    -the order by clause has 'limit' and 'a' that are not separated by a comma.
    -'{0}' is not a valid state field path expression
    -the identification variable "date" is not defined in the from clause
    -the identification variable "nr" is not defined in the from clause
    -the identification variable "limit" is not defined in the from clause


    je ne comprends pas vraiment ces erreurs
    merci

  3. #3
    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
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour,
    Visiblement tu fais un melange de requête Objet et requête native.Quand tu fais des NamedQuery il faudrait que tes requêtes soient en Objet (JPQL ou HQL), vois tu de quoi je parle?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 74
    Points : 49
    Points
    49
    Par défaut
    l'erreur était que JPA ne connaît pas le mot "limit"

    donc j'ai changé mon code =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     @NamedQuery(name = "prix_prixDuJour", , query = "SELECT p FROM prix where date < :dateDuJour order by nr desc")
    aprés j'ai fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         query.setMaxResults(1);
          return query.getSingleResult();

  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
    Points : 3 938
    Points
    3 938
    Par défaut
    Et plus optimisé encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT p FROM prix where p.date = (select max(p2.date)  from prix p2 where p2.date < :dateDuJour)
    et tu récupères le résultat directement avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return query.getSingleResult();
    .ça t'évite de rapatrier des lignes dont tu ne t'en serviras pas.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

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

Discussions similaires

  1. erreur avec les dates
    Par isma92 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/05/2008, 10h57
  2. [Dates] Erreur avec mktime()
    Par Chikh001 dans le forum Langage
    Réponses: 3
    Dernier message: 21/04/2008, 13h10
  3. Réponses: 11
    Dernier message: 13/09/2007, 15h25
  4. Erreur dans la requete : pb avec les dates
    Par shub dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 22/06/2006, 14h52
  5. [Dates] Erreur avec mktime
    Par Sandara dans le forum Langage
    Réponses: 7
    Dernier message: 21/06/2006, 16h14

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