【发布时间】:2020-11-25 17:40:05
【问题描述】:
我有以下基于java predicate 的代码,它从我的MYSQL DB 中获取结果列表:
Root<Person> from = query.from(Person.class);
CriteriaQuery<Person> selectQuery = query.select(from);
List<Person> searchResults = new ArrayList<>();
Predicate jobPredicate = createPersonJobPredicate();
Predicate agePredicate = createPersonAgePredicate(); //currently not used
selectQuery = selectQuery.where(jobPredicate);
searchResults =entityManager.createQuery(selectQuery).setFirstResult(searchRequest.getIndex()).setMaxResults(searchRequest.getSize()).getResultList();
我想要做的是更改上面的代码,以便结果列表必须匹配 both 谓词 - 例如必须是job - "doctor" AND age - 45
我尝试过如下组合谓词,但这总是只返回工作谓词:
selectQuery = selectQuery.where(jobPredicate).where(agePredicate);
我该怎么做?
【问题讨论】:
标签: java mysql arraylist predicate criteriaquery