Рекомендуется избегать возврата null
из методов.
Вы можете использовать criteriaBuilder
. conunction () , чтобы игнорировать null
параметр Specification
. Он генерирует всегда true
Predicate
. Есть противоположный метод criteriaBuilder
. disjunction ()
public static Specification<Prodotto> getProdottoByLineaSpec (String linea) {
return (root, query, criteriaBuilder) -> {
if (linea == null) {
return criteriaBuilder.conjunction();
}
return criteriaBuilder.like((root.join("linea")).get("nome"), "%" + linea + "%");
}
}
PS Вы получаете NullPointerException
, если первым Specification
является null
, пытающимся получить доступ к методу and
. Чтобы было понятно, это выглядит так
Specification.where(null.and(getProdottoByIngSpec(ing)));
Но если только секунда Specification
равна null
, то эта работает
Specification.where(getProdottoByLineaSpec(linea).and(null));
, потому что и параметр метода может быть null