没有元模型使用的JPA 2 Criteria API不区分大小写的条件

kos*_*ych 5 java hibernate jpa criteria-api jpa-2.0

如何在没有元模型使用的情况下创建不区分大小写的条件查询?

我正在尝试做这样的事情:

   CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Resident> criteria = builder.createQuery(Resident.class);
    Root<Resident> personRoot = criteria.from(Resident.class);

    criteria.where(builder.and(
            builder.equal(builder.upper(personRoot.get("firstName")), filter.getFirstName())),  //ERROR
            builder.equal(personRoot.get("lastName"), filter.getLastName()));
Run Code Online (Sandbox Code Playgroud)

但它会产生错误:

接口javax.persistence.criteria.CriteriaBuilder中的方法upper不能应用于给定的类型; 需要[ERROR]:找到javax.persistence.criteria.Expression [ERROR]:javax.persistence.criteria.Path

use*_*383 5

尝试

Expression<String>  firstName = personRoot.get("firstName");

criteria.where(builder.and(
            builder.equal(builder.upper(firstName ), filter.getFirstName())),   
            builder.equal(personRoot.get("lastName"), filter.getLastName()));
Run Code Online (Sandbox Code Playgroud)

似乎方法上层在接受路径方面存在一些问题


Ste*_*fan 5

这应该编译:

...builder.upper(personRoot.<String>get("firstName"))...
Run Code Online (Sandbox Code Playgroud)