2017-03-24 11 views
0

LIKE-Function of CriteriaQueryを使用して、データベースからDOUBLE(6,2)値をフィルタリングする必要があります。しかし、それは例外がスローされます。JPA - CriteriaQueryのLIKEを使用したMySQL DOUBLE(6,2)のフィルタ

Internal Exception: java.sql.SQLSyntaxErrorException: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found. 

コード:

stundensatz.ifPresent(s -> criteriaQuery.where(criteriaBuilder.like(mitarbeiter.get("stundensatz"), "%" + s + "%"))); 

"Stundensatzは" 時給を意味します。私はINTEGERと同じことをしましたが、これはうまくいきました。 LIKEでDOUBLEをどのようにフィルタリングできますか?私は本当に助けが必要です。私はここでこれに関する記事を見つけることができません。私はmitarbeiter.get("stundensatz")をStringまたはIntegerに変換しようとしましたが、これはうまくいきませんでした。

ありがとうございます。私はこのような数字でlike機能を使用することができるよ sven_meye

+0

どのようにStringにdoulbeをキャストしようとしたのですか? –

+0

'like'はStringのみで動作するので、キャストは必須です –

+0

toString()とCriteriaBuilder.toStringを試しましたが、TREATではなく、 –

答えて

1

Expression plzInt = kategorie.get("nummer"); 
Expression plzStr = criteriaBuilder.function("CHAR", String.class, plzInt); 
predicates.add(criteriaBuilder.like(criteriaBuilder.upper(plzStr), "%" + nummer.trim().toUpperCase() + "%")); 
関連する問題