我正在尝试使用jpa 2.0进行子字符串查询,但我不知道该怎么做。 到目前为止,我有这段代码:
time = builder.between(
matchesRoot.<Integer>get("startDateTime").toString().substring(8, 13),
Integer.getInteger(DateTimeUtil.dateTimeWithoutFormat(searchCommercialsDTO.getFinalDate())),
Integer.getInteger(DateTimeUtil.dateTimeWithoutFormat(searchCommercialsDTO.getIniDate()))
);
但由于我因为这个错误而无法编译它,所以它无效:
找不到合适的方法(String,Integer,Integer) 方法CriteriaBuilder.between(Expression,Y#1,Y#1)不适用 (没有类型变量的实例存在Y#1,因此参数类型String符合形式参数类型Expression) 方法CriteriaBuilder.between(Expression,Expression,Expression)不适用 (没有类型变量的实例存在Y#2,因此参数类型String符合形式参数类型Expression) 其中Y#1,Y#2是类型变量: Y#1扩展了方法中声明的Comparable(Expression,Y#1,Y#1) Y#2扩展了方法(表达式,表达式,表达式)之间声明的Comparable
有什么建议吗?谢谢!
答案 0 :(得分:0)
可以通过CriteriaBuilder.substring使用子字符串。那当然不是整数,而是字符串。
在当前的方法中,您调用Path的toString方法。结果SQL中的substring函数与用于构建查询的类的toString方法之间没有任何关联。