Фильтр PagingAndSortingRepository по полю в URL - PullRequest
0 голосов
/ 03 февраля 2020

Могу ли я спросить, можно ли фильтровать объекты Spring Boot по полям в URL? Например, у меня есть класс Employee с полями имя и фамилия. И я хотел бы отфильтровать по фамилии. Сначала я попробовал что-то вроде: localhost: 8080 / api / employee? LastName = aaa, но результат - все записи в базе данных.

Затем я последовал принятому ответу в этом посте: Использование findAll PagingAndSortingRepository с фильтром но он тоже не работает.

Вот мой код:

public interface EmployeeRepository extends PagingAndSortingRepository<Employee, Long> {

Page<Employee> findAllByLastName(String lastName, Pageable pageable);

}

, но этот запрос дает только плохой результат:

localhost:8080/api/employees/lastName&page=0&size=2

результат

{
"cause": {
    "cause": null,
    "message": "For input string: \"lastName&page=0&size=2\""
},
"message": "Failed to convert from type [java.lang.String] to type [java.lang.Long] for value 'lastName&page=0&size=2'; nested exception is java.lang.NumberFormatException: For input string: \"lastName&page=0&size=2\""

}

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Попробуйте с приведенными ниже фрагментами кода.

@GetMapping("/api/search")
    public ResponseEntity<List<User>> serachUsers(@RequestParam("lastName") String lastName, Pageable pageable) {
        List<User> users = userRepository.findByLastNameContaining(lastName, pageable);
        return ResponseEntity.ok(users);
}

Создайте Reposity с помощью

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

    List<User> findByLastNameContaining(String lastName, Pageable pageable);
}

, затем попробуйте с ниже curl

curl --location --request GET 'http://localhost:8080/api/search?lastName=test&page=0&size=2'
0 голосов
/ 03 февраля 2020

Пользовательские функции поиска в Spring Data JPA REST в разделе search/. Попробуйте ниже

localhost:8080/api/employees/search/findAllByLastName?lastName=Sadakath&page=0&size=2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...