Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对数字的类QueryDSL运算_Java_Querydsl - Fatal编程技术网

Java 对数字的类QueryDSL运算

Java 对数字的类QueryDSL运算,java,querydsl,Java,Querydsl,我必须用通配符搜索数字字段。相应的JQPL查询如下所示: SELECT e From Entity e where e.personNumber LIKE :numberPattern Constant<String> constant = (Constant<String>) Expressions.constant(personNummer); PredicateOperation predicateOperation = new PredicateOperatio

我必须用通配符搜索数字字段。相应的JQPL查询如下所示:

SELECT e From Entity e where e.personNumber LIKE :numberPattern
Constant<String> constant = (Constant<String>) Expressions.constant(personNummer);
PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE, entity.personNumber, Expressions.constant(constant));
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 ["(", "+", ...
如果我试着这样做:

SELECT e From Entity e where e.personNumber LIKE :numberPattern
Constant<String> constant = (Constant<String>) Expressions.constant(personNummer);
PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE, entity.personNumber, Expressions.constant(constant));
那么,有没有一种方法可以使用queryDSL对数字字段执行类似的操作?

您尝试过这个吗

PredicateOperation predicateOperation = new PredicateOperation(Ops.LIKE,
  entity.personNumber, Expressions.constant("1%"));

我将了解为什么stringValue()表达式不适用于OpenJPA。

当然它必须是1×2,而不是1*
Constant常量=(Constant)Expressions.Constant(personnumer);谓词操作谓词操作=新的谓词操作(Ops.LIKE、entity.personNumber、Expressions.constant(constant))也可以直接与
entity.personNumber.like(“%1”)