問題ステートメント
MySQL を使用したネイティブ JPA クエリの実行「:」を含むユーザー変数は、無効な構文により例外を発生させます: 「:」の後にスペースを続けることはできません。
解決策
この問題に対処するには、次のようにします。 「:」文字をエスケープする必要があります。これは、バックスラッシュ '' 文字を前に置くことで実現できます。
修正されたクエリは次のとおりです:
SELECT foo, bar, baz, @rownum:= if (@id = foo, @rownum+1, 1) as rownum, @id := foo as rep_id FROM foo_table ORDER BY foo, bar desc
JPA での実装
Query q = getEntityManager().createNativeQuery(query, SomeClass.class); return q.getResultList();
注:
提供されるソリューションは MySQL データベースを前提としています。他のデータベースを使用する場合、特殊文字をエスケープするための構文が異なる場合があります。したがって、推奨されるエスケープ方法については、特定のデータベースのドキュメントを参照することが重要です。
以上がMySQL の JPA クエリでコロン文字「:」をエスケープする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。