Java 用于检索数据的谓词
我已经创建了一个使用criteriaBuilder返回特定数据的方法。当我运行它但返回一个空列表时,它是成功的。 下面是代码Java 用于检索数据的谓词,java,sql,spring,jpa,predicate,Java,Sql,Spring,Jpa,Predicate,我已经创建了一个使用criteriaBuilder返回特定数据的方法。当我运行它但返回一个空列表时,它是成功的。 下面是代码 public List<WeekCycleEntity> searchOnWeekCycles(String keyword) { EntityManager em = createEntityManager(); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<WeekCycle
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();
}
public List searchOnWeekCycles(字符串关键字){
EntityManager em=createEntityManager();
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(WeekCycleEntity.class);
Root weekCycleEntity=cq.from(weekCycleEntity.class);
谓词findName=cb.like(weekCycleEntity.get(“name”),“%”关键字+“%”;
谓词findExecutedBy=cb.like(weekCycleEntity.get(“executedBy”),“%”“+”关键字+“%”;
cq.where(findName,findExecutedBy);
TypedQuery=em.createQuery(cq);
返回query.getResultList();
}
我认为唯一的原因可能是大小写不匹配,因此请尝试此方法
cb.like(cb.lower(weekCycleEntity.get(“name”)),“%”“+”关键字.toLowerCase()+“%”代码>这意味着您的条件与任何记录都不匹配。在运行代码之前,我确保它具有匹配记录。很高兴知道。好的,请接受答案并投票。谢谢