2010-03-02 13 views
2

J'ai une exception lorsque je génère cette instruction SQL EJB.Toplink Exception, quel est le problème?

Exception Description: Syntax error parsing the query [SELECT h FROM Busmodul h WHERE LOWER(h.modulNummer) LIKE :modulnummer AND h.einbauort.id = :einbauort_fk AND h.plattform.id = :plattform_fk ORDER BY TRIM(TRAILING '-' FROM CONCAT('0', h.modulNummer))], line 1, column 150: syntax error at [TRIM]. 
Internal Exception: line 1:150: expecting IDENT, found 'TRIM' 

Quelle est la signification de IDENT. Des idées que je fais mal?

Répondre

1

Votre clause ORDER BY n'est pas valide, vous ne pouvez pas commander sur les valeurs ou objets pour les valeurs ou objets non retournés par la clause SELECT (voir chapitre 4.9 ORDER BY Clause de la spécification JJ EJB 3.0).

Par ailleurs, je n'ai trouvé aucune mention de l'utilisation des fonctions SQL et des fonctions d'agrégation dans la clause ORDER BY du chapitre Query Language de la spécification EJB 3.0, donc je ne sais pas si cela est pris en charge.

+0

Jep merci. c'est juste pas pris en charge. –

3

Je pense que la première chose à noter est que EJB-QL n'est pas la même chose que SQL même s'il semble similaire, donc il ne se comporte pas toujours de la même manière qu'une requête SQL.

Bien que TRIM soit spécifié dans la spécification EJB-QL, doit utiliser un élément renvoyé par l'instruction SELECT. Dans ce cas, le résultat de la fonction TRIM n'est pas un identificateur pouvant satisfaire la clause ORDER BY. À partir de JPA Query Language Syntax section of the Java EE 5 Tutorial:

Lorsque vous utilisez la clause ORDER BY, la clause SELECT doit renvoyer un ensemble d'objets ou de valeurs pouvant être classés. Vous ne pouvez pas ordonner les valeurs ou les objets pour les valeurs ou les objets non retournés par la clause SELECT.

Vous trouverez plus d'informations sur le langage de requête Java Persistance dans le chapitre correspondant du Java EE 5 Tutorial.

+0

-1: TRIM est défini dans EJB-QL (voir la spécification JPA ou le tutoriel Java EE 5 http://java.sun.com/javaee/5/docs/tutorial/doc/bnbuf.html#bnbvo) –

+0

Vous avez raison, ma mauvaise. – Ophidian

+0

Suppression downvote –