1

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

但它不起作用,因为由于这个错误我无法编译它:

没有为 between(String,Integer,Integer) 方法找到合适的方法 CriteriaBuilder.between(Expression,Y#1,Y#1) 不适用(不存在类型变量 Y#1 的实例,因此该参数type String 符合形参类型 Expression) 方法 CriteriaBuilder.between(Expression,Expression,Expression) 不适用(不存在类型变量 Y#2 的实例,因此参数类型 String 符合形参类型 Expression ) 其中 Y#1,Y#2 是类型变量: Y#1 扩展了在方法 between(Expression,Y#1,Y#1) 中声明的 Comparable Y#2 扩展了在方法之间声明的 Comparable(Expression,Expression,Expression

有什么建议么?谢谢!

4

1 回答 1

0

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

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

于 2013-08-18T17:58:20.713 回答