List of usage examples for javax.persistence.criteria CriteriaBuilder treat
<X, T extends X> Root<T> treat(Root<X> root, Class<T> type);
From source file:com.carser.viamais.vo.TransactionFilter.java
private Predicate[] getPredicates(CriteriaBuilder cb, Root<Transaction> transaction) { List<Predicate> predicates = new ArrayList<>(); if (StringUtils.hasLength(pattern)) { String[] words = pattern.split(" "); for (String word : words) { Predicate model = cb.like(transaction.get(Transaction_.car).get(Car_.model).get(Model_.name), "%" + word + "%"); Predicate customer = cb.like(transaction.get(Transaction_.customer).get(Customer_.name), "%" + word + "%"); predicates.add((cb.or(model, customer))); }//from w w w . j a v a 2 s . c om } if (StringUtils.hasLength(rg)) { predicates.add(cb.like(transaction.get(Transaction_.customer).get(Customer_.rg), "%" + rg + "%")); } if (StringUtils.hasLength(cpf)) { predicates.add(cb.like(transaction.get(Transaction_.customer).get(Customer_.cpf).as(String.class), "%" + cpf + "%")); } if (StringUtils.hasLength(renavam)) { predicates.add(cb.like(transaction.get(Transaction_.car).get(Car_.renavam), "%" + renavam + "%")); } if (StringUtils.hasLength(plate)) { predicates.add(cb.equal(transaction.get(Transaction_.car).get(Car_.licensePlate), plate)); } if (StringUtils.hasLength(chassi)) { predicates.add(cb.like(transaction.get(Transaction_.car).get(Car_.chassi), "%" + chassi + "%")); } Expression<Date> date = cb.function("date", Date.class, transaction.get(Transaction_.transactionDate)); if (startDate != null) { predicates.add(cb.greaterThanOrEqualTo(date, startDate)); } if (finalDate != null) { predicates.add(cb.lessThanOrEqualTo(date, finalDate)); } if (StringUtils.hasLength(type)) { switch (type) { case "sale": predicates.add(cb.equal(transaction.get(Transaction_.type), Sale.class.getSimpleName())); break; case "purchase": predicates.add(cb.equal(transaction.get(Transaction_.type), Purchase.class.getSimpleName())); break; default: throw new BusinessException("transaction type not supported"); } } if (StringUtils.hasLength(advertiser)) { predicates.add(cb.equal(transaction.get(Transaction_.advertiser), advertiser)); } if (StringUtils.hasLength(financial)) { predicates.add(cb.like(cb.treat(transaction, Sale.class).get(Sale_.financial), financial)); } if (seller != null) { predicates.add(cb.equal(transaction.get(Transaction_.seller).get(Seller_.id), seller)); } return (predicates.toArray(new Predicate[predicates.size()])); }