В моем приложении у меня есть следующая конечная точка, которая принимает два обнуляемых параметра
@GetMapping
public Page<Foo> getAll(Pageable pageable,
@RequestParam(name = "city", required = false) String city,
@RequestParam(name = "active", required = false) Boolean active) {
return fooService.getAll(pageable, city, active);
}
Мои объекты:
public class Foo {
private boolean active;
private Location location;
}
public class Location {
private String city;
}
Мой вопрос: как для обработки вложенных свойств и игнорирования пустых параметров при перечислении из JpaRepository
?
Использование методов запроса Мне бы пришлось обрабатывать все комбинации null / notnull вручную и создавать 2 ^ number_of_parameters методов в итоге получится что-то вроде этого:
if (city == null) {
if (active == null) {
return fooRepository.findAll(pageable);
} else {
return fooRepository.findAllByActive(active, pageable);
}
} else {
if (active == null) {
return fooRepository.findAllByLocation_City(city, pageable);
} else {
return fooRepository.findAllByLocation_CityAndActive(city, active, pageable);
}
}
Использование запроса на примере было бы хорошим решением, но оно не поддерживает вложенные свойства (city
в Location
в моем дело). Кроме того, я бы хотел избежать использования аннотации @Query
, так как мы обычно не используем их в этом проекте.
Похоже, что каждый учебник и вопрос SO решают только одну из моих проблем (либо обработку пустых значений). или вложенные свойства). Я знаю, что Технические характеристики могут быть полезны здесь, но я не уверен, как правильно их использовать и работать с вложенными свойствами.
Любые советы будут высоко оценены.