检索数据的谓词

Predicate to retrieve data

我创建了一个使用 criteriaBuilder 的方法来 return 特定数据。当我 运行 它但 return 一个空列表时它成功了。 下面是代码

public List<WeekCycleEntity> searchOnWeekCycles(String keyword) {

EntityManager em = createEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<WeekCycleEntity> cq = cb.createQuery(WeekCycleEntity.class);



Root<WeekCycleEntity> weekCycleEntity = cq.from(WeekCycleEntity.class);


Predicate findName = cb.like(weekCycleEntity.get("name"), "%" + keyword + "%");
Predicate findExecutedBy = cb.like(weekCycleEntity.get("executedBy"), "%" + keyword + "%");
cq.where(findName, findExecutedBy);



TypedQuery<weekCycleEntity> query = em.createQuery(cq);
return query.getResultList();
}

我认为唯一的原因可能是大小写不匹配,所以请试试这个

cb.like(cb.lower(weekCycleEntity.get("name")), "%" + keyword.toLowerCase() + "%");