Wpis z mikrobloga

Mirkasy tworzę sobie specyfikację za pomocą org.springframework.data.jpa.domain.Specification.
Mam atrybuty i sprawdzam kazdy czy jest null i jesli nie to dodaje go do warunku AND poprzez predykaty.
Problemem jest gdy wszystkie pola sa null a więc zapytanie powinno zwrócić wszystkie elementy a hibernate robi w zapytaniu:

where 0=1
Specyfikacje robie mniej wiecej tak:

private static Specification buildUserSpecififcation(
Attributes searchAttributes) {
return (Specification)
(root, query, criteriaBuilder) -> {
List predicates = new ArrayList<>();

if (attributes.getUsername != null)) {
predicates.add(
criteriaBuilder.equal(
root.get("userName"), attributes.getUsername));}
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]))

Ktoś wie jak można zwrócić jakąś określoną specyikację, gdy predicates.isEmpty?
#java #spring #hibernate
  • 6