ワイルドカードを使用して数値フィールドを検索する必要があります。対応するJQPLクエリは次のようになります。
SELECT e From Entity e where e.personNumber LIKE :numberPattern
numberPatternは、「1 ?? 2」のような文字列であり、e.personNumberはデータベース(H2)上の数値です。
これをJQPLで実行した場合、まったく問題はありませんが、queryDSLクエリに入れることはできません。
私がしようとすると
andBuilder.and(entity.personNumber.stringValue().like(numberPattern)
私は
org.apache.openjpa.persistence.ArgumentException: "str (" bei Zeichen 7 gefunden, erwartet wurde jedoch ["(", "+", ...
私がこのようにしようとすると:
Constant<String> constant = (Constant<String>) Expressions.constant(personNummer);
PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE, entity.personNumber, Expressions.constant(constant));
結果は
Data conversion error converting "1*"; SQL statement:
Caused by: java.lang.NumberFormatException: For input string: "1*"
それで、queryDSLを使用して数値フィールドで同様の操作を行う方法はありますか?