Java jpa criteriabuilder upper给出编译错误

Java jpa criteriabuilder upper给出编译错误,java,hibernate,jpa,Java,Hibernate,Jpa,我打算使用CriteriaBuilder进行不区分大小写的查询,正如这里以及网上的许多其他问题和教程所述 我的代码是: public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) { return builder.equal(builder.upper(root.get("firstName")), "test".toUpperCase

我打算使用CriteriaBuilder进行不区分大小写的查询,正如这里以及网上的许多其他问题和教程所述

我的代码是:

public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
    return builder.equal(builder.upper(root.get("firstName")), "test".toUpperCase());
}
公共谓词toPredicate(根根、CriteriaQuery查询、CriteriaBuilder){
返回builder.equal(builder.upper(root.get(“firstName”),“test.toUpperCase());
}
但我得到了一个编译时错误:

类型CriteriaBuilder中的方法upper(表达式)不适用于参数(路径)

我使用的hibernate jpa版本是:

<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
org.hibernate.javax.persistence
hibernate-jpa-2.1-api
1.0.0.1决赛
它是否取决于我使用的hibernate版本?如何在那里放置表达式而不是路径


感谢您的帮助

正如编译器所说,我们希望表达式在此情况下路径从表达式扩展而来,但由于以下原因,您有解决此问题的路径

return builder.equal(builder.upper(root.<String> get("firstName")), "test".toUpperCase());
返回builder.equal(builder.upper(root.get(“firstName”),“test.toUpperCase());

诀窍是在获取方法之前添加
,希望对您有所帮助。

谢谢!这就是问题所在,我想知道表达式与路径的关系,但我忽略了一点,即它需要的是字符串而不是object。这对我也有帮助。非常感谢。顺便说一句,这里是我的小片段,以防这可以帮助别人。选择(cb.magest(from.get(事件时间戳));