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 :

Problème de syntaxe


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 78
    Par défaut Problème de syntaxe
    Bonjour,

    Je développe des EJB3 session stateless sous weblogic 10.
    Lorsque j'execute la query:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select model from ProductList model where (UPPER(model.productListName) LIKE UPPER('list'))
    J'obtiens une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <6 nov. 2007 09 h 50 CET> <Info> <EJB> <BEA-010051> <EJB Exception occurred during invocation from home: weblogic.ejb.container.internal.StatelessEJBHomeImpl@859f0a threw exception: <4|false|0.9.7> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter 'select model from ProductList model where model.productListName IS NOT NULL AND (UPPER(model.productListName) LIKE UPPER('list'))'. Error message: <4|false|0.9.7> org.apache.openjpa.kernel.jpql.ParseException: Encountered "UPPER ( model . productListName ) LIKE UPPER" at character 82, but expected: ["(", ")", "+", "-", ".", ":", "<", "<=", "<>", "=", ">", ">=", "?", "ABS", "ALL", "AND", "ANY", "AS", "ASC", "AVG", "BETWEEN", "BOTH", "BY", "CONCAT", "COUNT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DELETE", "DESC", "DISTINCT", "EMPTY", "ESCAPE", "EXISTS", "FETCH", "FROM", "GROUP", "HAVING", "IN", "INNER", "IS", "JOIN", "LEADING", "LEFT", "LENGTH", "LIKE", "LOCATE", "LOWER", "MAX", "MEMBER", "MIN", "MOD", "NEW", "NOT", "NULL", "OBJECT", "OF", "OR", "ORDER", "OUTER", "SELECT", "SET", "SIZE", "SOME", "SQRT", "SUBSTRING", "SUM", "TRAILING", "TRIM", "UPDATE", "UPPER", "WHERE", <BOOLEAN_LITERAL>, <DECIMAL_LITERAL>, <IDENTIFIER>, <INTEGER_LITERAL>, <STRING_LITERAL>].
    <4|false|0.9.7> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter 'select model from ProductList model where model.productListName IS NOT NULL AND (UPPER(model.productListName) LIKE UPPER('list'))'. Error message: <4|false|0.9.7> org.apache.openjpa.kernel.jpql.ParseException: Encountered "UPPER ( model . productListName ) LIKE UPPER" at character 82, but expected: ["(", ")", "+", "-", ".", ":", "<", "<=", "<>", "=", ">", ">=", "?", "ABS", "ALL", "AND", "ANY", "AS", "ASC", "AVG", "BETWEEN", "BOTH", "BY", "CONCAT", "COUNT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DELETE", "DESC", "DISTINCT", "EMPTY", "ESCAPE", "EXISTS", "FETCH", "FROM", "GROUP", "HAVING", "IN", "INNER", "IS", "JOIN", "LEADING", "LEFT", "LENGTH", "LIKE", "LOCATE", "LOWER", "MAX", "MEMBER", "MIN", "MOD", "NEW", "NOT", "NULL", "OBJECT", "OF", "OR", "ORDER", "OUTER", "SELECT", "SET", "SIZE", "SOME", "SQRT", "SUBSTRING", "SUM", "TRAILING", "TRIM", "UPDATE", "UPPER", "WHERE", <BOOLEAN_LITERAL>, <DECIMAL_LITERAL>, <IDENTIFIER>, <INTEGER_LITERAL>, <STRING_LITERAL>].
    	at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.parse(JPQLExpressionBuilder.java:1656)
    	at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.<init>(JPQLExpressionBuilder.java:1636)
    	at org.apache.openjpa.kernel.jpql.JPQLParser.parse(JPQLParser.java:44)
    Sans le UPPER je n'ai pas d'erreur.Quelqu'un a-t-il déjà testé cette fonction?

  2. #2
    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
    Bonjour.
    Je crois que c'est le second upper combiné avec le LIKE qui cause le problème: J'arrive à reproduire cette erreur avec TopLink, et ça marche à merveille si je vire le second UPPER ou le LIKE.
    Bref, LIKE n'accèpte pas que son paramètre soit une fonction.

    Bonne chance.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Par défaut
    Peut-être :
    ??

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 78
    Par défaut
    La solution est d'utliser la fonction "UPPER" JPQL pour la première partie de mon LIKE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select model from ProductList model where UPPER(model.productListName) LIKE ...
    et d'utiliser la fonction .toUpperCase() de java pour la seconde partie du LIKE
    Merci pour votre aide.

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

Discussions similaires

  1. Problème de syntaxe - elements['x'].value
    Par Equus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2005, 11h22
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de syntaxe
    Par Mister_FX dans le forum ASP
    Réponses: 5
    Dernier message: 30/06/2004, 10h01
  4. Problème de syntaxe ADO ...
    Par bendev dans le forum ASP
    Réponses: 2
    Dernier message: 15/04/2004, 14h38
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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