这就是我要实现的。
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<User> query = cb.createQuery(User.class);
Root<User> userRoot = query.from(User.class);
List<Predicate> predicates = new ArrayList<>();
Expression<String> userExpression = statusRoot.get("firstName");
for (String str : firstNames) {
predicates.add(cb.like(userExpression, "%" + str + "%"));
}
我想在值列表上应用like子句,但将所有谓词附加于AND运算符。请帮忙。
答案 0 :(得分:0)
示例中给出的实际代码并不显示谓词的使用。那就是问题所在。我认为这相当于相当典型:
//conjunction, will combine with 'AND'
query.where(predicates.toArray(new Predicate[0]));
作为documented,它将结合谓词和AND
:
修改查询以根据查询结果限制查询结果 指定限制谓词的合取
将谓词与OR
组合的一种方法是简单地使用CriteriaBuilder。or:
//disjunction, will combine with 'OR'
Predicate firstNameLikeAnyOf = cb.or(predicates.toArray(new Predicate[0]));
query.where(firstNameLikeAnyOf);