2

この EJB SQL ステートメントを生成すると、例外が発生します。

    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'

IDENT の意味は何ですか。私が間違っていることはありますか?

4

2 に答える 2

3

最初に注意すべきことは、EJB-QL は SQL と似ていても同じではないということです。そのため、SQL クエリの動作が期待されるのと同じように常に動作するとは限りません。

TRIMEJB-QL 仕様で指定されていますが、ステートメントORDER BYによって返されるものを使用する必要があります。SELECTこの場合、関数の結果は、句TRIMを満たすことができる識別子ではありません。ORDER BYJava EE 5 チュートリアルのJPA Query Language Syntax セクションから:

ORDER BY 句を使用する場合、SELECT 句はオブジェクトまたは値の順序付け可能なセットを返す必要があります。SELECT 句によって返されない値またはオブジェクトの値またはオブジェクトを順序付けることはできません。

Java Persistance Query Language の詳細については、Java EE 5 チュートリアルの関連する章を参照してください。

于 2010-03-02T13:56:28.323 に答える
1

句が無効です。SELECTORDER BY句によって返されない値またはオブジェクトの値またはオブジェクトを順序付けることはできません (EJB 3.0 JPA 仕様の 4.9 章 ORDER BY 句を参照)。

ところで、EJB 3.0 仕様のクエリ言語の章の句で SQL 関数と集計関数の使用についての言及を見つけることができなかったORDER BYので、これがサポートされているかどうかはわかりません。

于 2010-03-02T18:49:48.670 に答える