如何在criteriaQuery api中使用substring(jpa 2.0)

时间:2013-03-25 14:02:56

标签: java jpa-2.0 criteria-api

我正在尝试使用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

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

可以通过CriteriaBuilder.substring使用子字符串。那当然不是整数,而是字符串。

在当前的方法中,您调用Path的toString方法。结果SQL中的substring函数与用于构建查询的类的toString方法之间没有任何关联。