2017-04-15 10 views
0

このクエリの何が問題なのですか:SELECT i FROM Item i WHERE 1 = 1 AND UPPER(i.nome) LIKE %:nome% ORDER BY UPPER(i.nome)?私はLIKE '%:nome%'に一重引用符を付けて試してみましたが、うまくいきません。JPAクエリLIKEが機能しません

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Syntax error parsing [SELECT i FROM Item i WHERE 1 = 1 AND UPPER(i.nome) LIKE %:nome% ORDER BY UPPER(i.nome)]. 
[56, 63] The identification variable '%:nome%' is not following the rules for a Java identifier. 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605) 
+2

:nome'、および先頭に追加/パラメータ値にパーセント記号を追加。私のアプリケーションでの検索のため、異なる位置に –

答えて

1

としてはhereを説明したパラメータを設定している間、あなたは例えば、%で値をラップする必要がありますように使用 `

query = em.createQuery("SELECT i FROM Item i WHERE 1 = 1 AND UPPER(i.nome) LIKE :nome ORDER BY UPPER(i.nome)"); 
query.setParameter("nome","%"+nome.toUpperCase()+"%"); 
+0

%が必要です。検索には、部分文字列、単語全体、アルファベット/文字列の3つのオプションがあります。 – ceklock

+1

あなたが投稿したリンクはJPAのドキュメントではありません。これは、spring-data-jpaドキュメントを指しています.OPはおそらく使用していないでしょう。彼が使用していた場合、あなたがリンクしているドキュメントによれば、この無効なJPQLクエリが有効なものに変換されるため、彼が使用するクエリは正常に動作します。 –

+1

@JBNizetあなたの入力に感謝します。私は答えを更新しました。 –

関連する問題