LIKE演算子を JPA クエリに使用する必要があります。String 以外の型に使用する必要がありますが、JPA 基準 API では String パラメーターのみを追加できます。を使用してみましたが、何かが失敗し、基になる関数を.as(String.class)
呼び出してみましたが、不明な理由で再び失敗しました。CAST
Oracle
JPQLでもクエリを書いてみましたが、期待通りに動作します。これはクエリです:
SELECT p from CustomerOrder p where p.id like '%62%'
アップデート:
クエリは、フィルタリング用と同様に一般的な方法で構築する必要があるため、実行時に作成する必要があります。既に作成されているクエリで、次のようにLIKE句を追加しようとしました。
query.where(builder.like(selectAttributePath.as(String.class), "%"+filterValue.toString().toLowerCase()+"%"));
しかし、これは次の例外でクラッシュします:
org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found '(' near line 1, column 156 [select distinct generatedAlias0.id from de.brueckner.mms.proddetailschedact.data.CustomerOrder as generatedAlias0 where cast(generatedAlias0.id as varchar2(255 char)) like :param0]
SQLDeveloper を使用してOracleに対して同じクエリを直接実行したので、この観点からは適切なはずです。したがって、問題はHibernateが問題であることです。それを修正する方法について何か提案はありますか?
JPA基準を使用してこのクエリを作成するにはどうすればよいですか?