【问题标题】:Predicate to retrieve data检索数据的谓词
【发布时间】:2020-06-16 03:26:11
【问题描述】:

我创建了一个使用条件构建器返回特定数据的方法。当我运行它但返回一个空列表时它成功。 下面是代码

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();
}

【问题讨论】:

  • 表示您的条件与任何记录都不匹配。
  • 我在运行代码之前确保它有匹配记录。

标签: java sql spring jpa predicate


【解决方案1】:

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

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

【讨论】:

  • 很高兴知道。好的,请接受答案并投票。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多