没有元模型使用的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"))...
- 使用Criteria API创建查询(JPA 2.0)
- 为什么Hibernate内联传递给JPA Criteria Query的整数参数列表?
- JPA 2 – 在CriteriaQuery中使用@ElementCollection
- JPA标准谓词条件
- 在基于LazyDataModel的排序/过滤字段创建JPA条件查询时,删除if-else梯形图
- JPA Criteria API – 如何添加JOIN子句(作为一般句子)
- Hibernate Criteria – 返回列不同的记录
- 具有多个参数的JPA Criteria API
- 如何构建一个动态查询,该查询添加了迄今为止的天数,并使用条件API将该日期与另一个日期进行比较?