Map<String, Object> params = ...; CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Tuple> cq = cb.createTupleQuery(); Root<Transaction> r = cq.from(Transaction.class); Predicate p= cb.conjunction(); for (Map.Entry<String, Object> param: params.entrySet()) p = cb.and(p, cb.equal(r.get(param.getKey()), param.getValue())); cq.multiselect(r.get("id"), r.get("status"), r.get("created_at")) .where(p) .orderBy(cb.asc(r.get("id"))); List<Tuple> result = em.createQuery(cq).getResultList();
Map<SingularAttribute<Transaction, ?>, Object> params = ...; CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Tuple> cq = cb.createTupleQuery(); Root<Transaction> r = cq.from(Transaction.class); Predicate p= cb.conjunction(); for (Map.Entry<SingularAttribute<Transaction, ?>, Object> param: params.entrySet()) p = cb.and(p, cb.equal(r.get(param.getKey()), param.getValue())); cq.multiselect(r.get(Transaction_.id), r.get(Transaction_.status), r.get(Transaction_.created_at)) .where(p) .orderBy(cb.asc(r.get(Transaction_.id))); List<Tuple> result = em.createQuery(cq).getResultList();
@Override public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) { return cb.conjunction(); } }
default Predicate orderIdPredicate(String orderId, Root<T> root, CriteriaBuilder cb) { return cb.conjunction(); }
public List<PersistedMessageBO> findByValues(Map<String, String> criteriaValues, int maxRows) { CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<PersistedMessageBO> query = builder.createQuery(PersistedMessageBO.class); Root<PersistedMessageBO> message = query.from(PersistedMessageBO.class); Predicate predicate = builder.conjunction(); for (Map.Entry<String, String> entry : criteriaValues.entrySet()) { predicate = builder.and(predicate, builder.equal(message.get(entry.getKey()), entry.getValue())); } query.where(predicate); TypedQuery<PersistedMessageBO> typedQuery = entityManager.createQuery(query); return typedQuery.getResultList(); }
CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<Site> q = cb.createQuery(Site.class); Root<Site> e = q.from(Site.class); Join<Site,SiteType> siteType = e.join(Site_.siteType); Predicate predicate = cb.conjunction(); Predicate p1 = cb.equal(siteType.get(SiteType_.id), selectedSiteType.getId()); Predicate p2 = cb.equal(e.get(Site_.markedAsDeleted), false); predicate = cb.and(p1,p2); q.where(predicate); q.select(e); TypedQuery<Site> tq = entityManager.createQuery(q); List<Site> all = tq.getResultList(); return all;
/** * * @param predicates * @return */ protected Predicate conjunctPredicates(List<Predicate> predicates) { if (predicates == null || predicates.size() == 0) return null; Predicate predicate = criteriaBuilder.conjunction(); for (Predicate p : predicates) { predicate = criteriaBuilder.and(predicate, p); } return predicate; }
@Override public List<Depot> usableDepotFor(BiFunction<CriteriaBuilder, Root<UsageStock>, Predicate> condition) { final CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<Depot> cq = cb.createQuery(Depot.class); Root<UsageStock> root = cq.from(UsageStock.class); return entityManager.createQuery(cq .select(root.get(UsageStock_.depot)) .groupBy(root.get(UsageStock_.depot)) .having(condition == null ? cb.conjunction() : condition.apply(cb, root)) .distinct(true) ) .getResultList(); }
CriteriaBuilder builder = em.getCriteriaBuilder(); Predicate conjunction = builder.conjunction(); if (var1 != null) { conjunction = builder.and(conjunction, builder.equal(root.get(MyEntity_.var1), var1)); } if (var2 != null) { conjunction = builder.and(conjunction, builder.equal(root.get(MyEntity_.var2), var2)); } ... criteria.where(conjunction);
@Override public Specification<MainGood> specification() { return (root, query, cb) -> { Predicate predicate = cb.conjunction(); if (!StringUtils.isEmpty(productName)) predicate = cb.and(cb.like(root.get("product").get("name"), "%" + productName + "%")); return predicate; }; } };
@Override public Predicate toPredicate(final Root<T> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) { final Node rootNode = parseRsql(rsql); query.distinct(true); final JpqQueryRSQLVisitor<A, T> jpqQueryRSQLVisitor = new JpqQueryRSQLVisitor<>(root, cb, enumType, virtualPropertyReplacer, database); final List<Predicate> accept = rootNode.<List<Predicate>, String> accept(jpqQueryRSQLVisitor); if (!CollectionUtils.isEmpty(accept)) { return cb.and(accept.toArray(new Predicate[accept.size()])); } return cb.conjunction(); } }
@Override public Predicate toPredicate(final Root<T> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) { final Node rootNode = parseRsql(rsql); query.distinct(true); final JpqQueryRSQLVisitor<A, T> jpqQueryRSQLVisitor = new JpqQueryRSQLVisitor<>(root, cb, enumType, virtualPropertyReplacer, database); final List<Predicate> accept = rootNode.<List<Predicate>, String> accept(jpqQueryRSQLVisitor); if (!CollectionUtils.isEmpty(accept)) { return cb.and(accept.toArray(new Predicate[accept.size()])); } return cb.conjunction(); } }
@Override public Slice<SoftwareModule> findAll(final Pageable pageable) { final List<Specification<JpaSoftwareModule>> specList = new ArrayList<>(2); Specification<JpaSoftwareModule> spec = SoftwareModuleSpecification.isDeletedFalse(); specList.add(spec); spec = (root, query, cb) -> { if (!query.getResultType().isAssignableFrom(Long.class)) { root.fetch(JpaSoftwareModule_.type); } return cb.conjunction(); }; specList.add(spec); return convertSmPage(findByCriteriaAPI(pageable, specList), pageable); }
/** * Create a predicate group. */ private Predicate getGroupPredicate(final UiFilter group, final Root<U> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) { // Build the predicates final java.util.List<Predicate> predicates = getPredicates(group, root, query, cb); // Build the specification if (predicates.isEmpty()) { return cb.conjunction(); } final Predicate[] filteredPredicates = predicates.toArray(new Predicate[predicates.size()]); if (group.getGroupOp() == FilterOperator.AND) { return cb.and(filteredPredicates); } return cb.or(filteredPredicates); }
@Override public Slice<SoftwareModule> findAll(final Pageable pageable) { final List<Specification<JpaSoftwareModule>> specList = new ArrayList<>(2); Specification<JpaSoftwareModule> spec = SoftwareModuleSpecification.isDeletedFalse(); specList.add(spec); spec = (root, query, cb) -> { if (!query.getResultType().isAssignableFrom(Long.class)) { root.fetch(JpaSoftwareModule_.type); } return cb.conjunction(); }; specList.add(spec); return convertSmPage(findByCriteriaAPI(pageable, specList), pageable); }
@Override public List<Predicate> visit(final OrNode node, final String param) { beginLevel(true); final List<Predicate> childs = acceptChilds(node); endLevel(); if (!childs.isEmpty()) { return toSingleList(cb.or(childs.toArray(new Predicate[childs.size()]))); } return toSingleList(cb.conjunction()); }
@Override public List<Predicate> visit(final AndNode node, final String param) { beginLevel(false); final List<Predicate> childs = acceptChilds(node); endLevel(); if (!childs.isEmpty()) { return toSingleList(cb.and(childs.toArray(new Predicate[childs.size()]))); } return toSingleList(cb.conjunction()); }
@Override public List<Predicate> visit(final OrNode node, final String param) { beginLevel(true); final List<Predicate> childs = acceptChilds(node); endLevel(); if (!childs.isEmpty()) { return toSingleList(cb.or(childs.toArray(new Predicate[childs.size()]))); } return toSingleList(cb.conjunction()); }
@Override public List<Predicate> visit(final AndNode node, final String param) { beginLevel(false); final List<Predicate> childs = acceptChilds(node); endLevel(); if (!childs.isEmpty()) { return toSingleList(cb.and(childs.toArray(new Predicate[childs.size()]))); } return toSingleList(cb.conjunction()); }
CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<Person> criteria = builder.createCriteria(Person.class); Root<Person> pRoot = criteria.from(Person.class); Join<Person, Language> langJoin = criteria.join("language", JoinType.LEFT); Predicate conjunction = builder.conjunction(); criteria.where(builder.and( builder.like(langJoin.get(Language_.locale), locale), builder.like(pRoot.get(Person_.name), name), builder.between(pRoot.get(Person_.time), startDate, endDate)); criteria.orderBy(builder.asc(pRoot.get(Person_.name)));