我必须用通配符搜索数字字段。相应的 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)
I get a
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对数字字段进行like操作呢?