您可以将谓词数组传递给
CriteriaBuilder,以决定
equal或
like随行。为此,构建一个列表并将该列表的内容打包到单个
and语句中的数组中。像这样:
final List<Predicate> predicates = new ArrayList<Predicate>();for (final Entry<String, String> e : myPredicateMap.entrySet()) { final String key = e.getKey(); final String value = e.getValue(); if ((key != null) && (value != null)) { if (value.contains("%")) { predicates.add(criteriaBuilder.like(root.<String> get(key), value)); } else { predicates.add(criteriaBuilder.equal(root.get(key), value)); } }}query.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));query.select(count);如果需要在
and和之间进行区分
or,请使用两个列表。



