如何在不使用元模型的情况下创建不区分大小写的条件查询?
我正在尝试做这样的事情:
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()));
但它会产生错误:
接口javax.persistence.criteria.CriteriaBuilder中的方法upper不能应用于给定的类型; 需要[ERROR]:javax.persistence.criteria.Expression [ERROR]发现:javax.persistence.criteria.Path
答案 0 :(得分:5)
这应该编译:
...builder.upper(personRoot.<String>get("firstName"))...
答案 1 :(得分:4)
试
Expression<String> firstName = personRoot.get("firstName");
criteria.where(builder.and(
builder.equal(builder.upper(firstName ), filter.getFirstName())),
builder.equal(personRoot.get("lastName"), filter.getLastName()));
看起来方法上层在接受路径方面存在一些问题