【问题标题】:How to use substring in criteriaQuery api (jpa 2.0)如何在criteriaQuery api(jpa 2.0)中使用子字符串
【发布时间】:2013-03-25 14:02:56
【问题描述】:

我正在尝试使用 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 的实例,因此参数类型 String 符合形式参数类型 Expression) 方法 CriteriaBuilder.between(Expression,Expression,Expression) 不适用 (不存在类型变量 Y#2 的实例,因此参数类型字符串符合形式参数类型表达式) 其中 Y#1,Y#2 是类型变量: Y#1 扩展了在方法 between(Expression,Y#1,Y#1) 中声明的 Comparable Y#2 扩展了在方法 between(Expression,Expression,Expression) 中声明的 Comparable

有什么建议吗?谢谢!

【问题讨论】:

    标签: java jpa-2.0 criteria-api


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多