Serwis przyjmuje wiele parametrów, z czego problematycznie są tylko listy. Jedną z takich list jest ```List<CountryType> countries

```java
final CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
final CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
final Root<MovieEntity> root = countQuery.from(MovieEntity.class);

następnie tworzę Predicate poprzez specjalne przygotowaną do tego metodę

final Predicate whereClause = MovieSpecs
                .getFindPredicate(
                        root,
                        cb,
                        countries
                );
public static Predicate getFindPredicate(
        final Root<MovieEntity> root,
        final CriteriaBuilder cb
        final List<CountryType> countries
) {
    final List<Predicate> predicates = new ArrayList<>();
    if(countries != null && !countries.isEmpty()) {
        final List<Predicate> orPredicates =
                countries
                        .stream()
                        .map(country-> cb.equal(root.get(MovieEntity_.countries), country))
                        .collect(Collectors.toList());
        predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
    }
    return cb.and(predicates.toArray(new Predicate[predicates.size()]));
}

nastepnie ustawiam predicate w poleceniu

countQuery.select(cb.count(root)).where(whereClause);

i wywołuję

final Long count = this.entityManager.createQuery(countQuery).getSingleResult();

i robi out. Wyrzuca mi(https://pastebin.com/zKYBhsv8)

[EL Warning]: 2017-10-14 22:25:37.168--UnitOfWork(1467514438)--Exception [EclipseLink-6168] (Eclipse Persistence Services - 2.7.0.v20170811-d680af5): org.eclipse.persistence.exceptions.QueryException
Exception Description: Query failed to prepare, unexpected error occurred: [java.lang.NullPointerException].
Internal Exception: java.lang.NullPointerException
Query: ReportQuery(referenceClass=MovieEntity )

Wspomnę, że ten błąd wyrzuca tylko i wyłącznie podczas, gdy do predicate dodana jest lista. Dodane do predicate takie elementy jak predicates.add(cb.like(root.get(MovieEntity_.title), "%"+title+"%")); czy ```predicates.add(cb.equal(root.get(MovieEntity_.type), type));