Необязательный параметр с запросом Spring-Boot jpa 1.5 - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу выполнить запрос для списка фильтров с пружинной загрузкой 1.5, у меня есть обязательный параметр (имя пользователя) и необязательный параметр (электронная почта). Как я могу назначить необязательный параметр для параметра в запросе? @Query («ВЫБИРАЕТЕ У пользователя, ГДЕ u.username НРАВИТСЯ: имя пользователя И u.email =: электронная почта») public Page getUsers (@Param ("username") String username, @Param ("email") String email); http://localhost:8080/users?username=&email=test: отлично работает http://localhost:8080/users?username=: исключение

1 Ответ

0 голосов
/ 20 ноября 2018

Используйте API критериев JPA следующим образом:

Сначала создайте Specification объект:

private Specification<Item> createSpecification(ItemSearch itemSearch) {
    return (root, query, criteriaBuilder) -> criteriaBuilder.and(
            Stream.of(
                    itemSearch.getUsername() == null ? null : criteriaBuilder.like(root.get("username"), itemSearch.getUsername()),
                    itemSearch.getEmail() == null ? null : criteriaBuilder.equal(root.get("email"), itemSearch.getEmail())
            ).filter(Objects::nonNull).toArray(Predicate[]::new)
    );
}

Расширение вашего хранилища с JpaSpecificationExecutor:

public interface ItemRepository extends CrudRepository<Item, Long>, JpaSpecificationExecutor<Item> {

}

Выберите все позиции по спецификации:

List<Item> items = itemRepository.findAll(createSpecification(itemSearch))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...