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

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

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

CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery criteria = builder.createQuery(Resident.class); Root 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())); 

但它会产生错误:

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

尝试

 Expression firstName = personRoot.get("firstName"); criteria.where(builder.and( builder.equal(builder.upper(firstName ), filter.getFirstName())), builder.equal(personRoot.get("lastName"), filter.getLastName())); 

看起来这个方法上层接受路径有一些问题

这应该编译:

 ...builder.upper(personRoot.get("firstName"))...