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 :
Echec lors du déploiement :
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)
... 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 :
Echec lors du déploiement :
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
J'ai essayé d'autres méthodes plus ou moins "underground" pour arriver à mes fins, je vous passe les détails...java.lang.ClassCastException: org.eclipse.persistence.internal.jpa.parsing.CoalesceNode cannot be cast to org.eclipse.persistence.internal.jpa.parsing.AliasableNode
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.
Partager