の場合、ワイルドカードを使用して数字フィールドを検索する必要があります。クエリは次のようになり、対応するJQPL:QueryDSL数字の操作が
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で数字フィールドに同様の操作を行う方法はありますか?
必ず1 * – Luk
ではなく、1〜2でなければなりません。定数定数=(定数)Expressions.constant(personNummer); PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE、entity.personNumber、Expressions.constant(constant)); ' *または_の代わりに%で入れた方が良いでしょうか? –
Luk