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

Glassfish et Payara Java Discussion :

JPA : tri des résultats selon une fonction SQL


Sujet :

Glassfish et Payara Java

  1. #1
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 316
    Points
    316
    Par défaut JPA : tri des résultats selon une fonction SQL
    Bonjour,


    Je cherche à utiliser JPA à travers JPQL, et j'ai un soucis au moment d'utiliser la clause ORDER BY sachant que celle ci se calcule à partir du résultat de l'appel à la fonction COALESCE.

    J'utilise GF version 3.0.1b22 ; EclipseLink 2.1.x.

    J'ai essayé de plusieurs manières (via des @NamedQueries) mais chacune d'entre elle s'est terminée en échec :

    Première tentative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT o
    FROM ...
    LEFT JOIN ... as p
    ...
    ORDER BY COALESCE(o.firstField, p.otherField)
    Echec lors du déploiement :
    ... line 1, column 679: unexpected token [COALESCE].
    Internal Exception: NoViableAltException(15!=[1328:1: orderByItem returns [Object node] : (n= stateFieldPathExpression (a= ASC | d= DESC | ) | i= IDENT (a= ASC| d= DESC | ) );])

    Deuxième tentative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT o, COALESCE(o.firstField, p.otherField) as myAlias
    FROM ...
    LEFT JOIN ... as p
    ...
    ORDER BY myAlias
    Echec lors du déploiement :
    java.lang.ClassCastException: org.eclipse.persistence.internal.jpa.parsing.CoalesceNode cannot be cast to org.eclipse.persistence.internal.jpa.parsing.AliasableNode
    J'ai essayé d'autres méthodes plus ou moins "underground" pour arriver à mes fins, je vous passe les détails...

    Voilà, donc si vous pouviez me donner quelques pistes pour pouvoir trier mes résultats via le COALESCE, je vous en serai bien reconnaissant ! Merci beaucoup.

  2. #2
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Salut,

    D'après cette discussion, traitant du même sujet, ce serait un bug d'EclipseLink et qui serait résolu dans les versions ultérieures au 2.1.x(celle que tu utilise :s ) !

    Le bug signalé.

    Donc, si tu pouvais passer à EclipseLink 2.2, ça devrait régler ton problème.
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  3. #3
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 316
    Points
    316
    Par défaut
    Merci DarkMolo pour ta réponse.
    Apparemment c'est même la version 2.3 qu'il faut utiliser, même.
    Sais-tu si elle est fournie avec la version 3.1 de GF ?

    A tout hasard, existerait-il un "workaround" pour pouvoir contourner ce bug dans cette version d'EclipseLink ? (Pas sûr qu'on puisse changer la version rapidement).

    Merci beaucoup.

  4. #4
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Pourtant l'ami au problème similaire a bien dit que c'était bon quand il est passé à la 2.2 .

    Pour GF 3.1, je crois malheureusement que c'est toujours la 2.1 qui est utilisée(Enfin c'est ce que j'ai cru comprendre de ça).

    Sinon, bien que pas élégant, il y toujours le "createNativeQuery" à laquelle tu pourrais passer une belle requête SQL !
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  5. #5
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 316
    Points
    316
    Par défaut
    Oui bien sur il reste les native queries mais ca ne m'arrangeait franchement pas de les utiliser... j'ai pas mal de paramètres dans ma requête, et c'est moins maintenable a plus long terme... Bref je vais voir ce qui se décide sachant cela !
    Encore merci !

  6. #6
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    GlassFish 3.1 utilise EclipseLink 2.2.
    Sinon il y a la criteria API...

  7. #7
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 316
    Points
    316
    Par défaut
    Alexis,

    En effet, il reste la possibilité d'utiliser cette API. Il faut que je l'étudie de plus près car elle ne me semblait pas aussi puissante que la syntaxe du JPQL de prime abord. J'aurais voulu éviter aussi d'utiliser trop de manières différentes de coder les requêtes SQL.

    Merci pour toutes ces précisions.

Discussions similaires

  1. [MySQL] Affichage trié des résultats d'une table
    Par baggie dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/11/2009, 11h27
  2. [Requête]Concaténation des résultats d'une requête SQL
    Par teks9 dans le forum Développement
    Réponses: 2
    Dernier message: 01/09/2008, 15h34
  3. Eviter l'affichage des résultats d'une proc sql
    Par fafabzh6 dans le forum SAS Base
    Réponses: 0
    Dernier message: 30/07/2008, 14h42
  4. [MySQL] Tri des résultats d'une requête
    Par gueud dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/02/2008, 18h22

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