Приложение Spring Boot REST; findBy с использованием внешнего ключа - PullRequest
0 голосов
/ 09 июля 2020

Используя Spring Data REST, у меня есть две модели, NvdApps с отношением один-ко-многим к NvdVulnerabilities

Я пытаюсь добавить возможность поиска NvdVulnerabilities с помощью NvdApp, поэтому мой репозиторий выглядит как это:

public interface NvdVulnerabilityRepository extends PagingAndSortingRepository<NvdVulnerability, Long> {
    List<NvdVulnerability> findByNvdApp(NvdApp nvdApp);
}

И это дает мне конечную точку REST:

"findByNvdApp" : {
      "href" : "http://localhost:8080/api/nvdVulnerabilities/search/findByNvdApp{?nvdApp}",
      "templated" : true
    }

Когда я пытаюсь использовать эту конечную точку, она просто возвращает всю таблицу, независимо от того, что я поставил в строке запроса. Примеры URL, которые я пробовал:

http://localhost:8080/api/nvdVulnerabilities/search/findByNvdApp?nvd_app_id=25
http://localhost:8080/api/nvdVulnerabilities/search/findByNvdApp?25
http://localhost:8080/api/nvdVulnerabilities/search/findByNvdApp?NvdApp=25

Мне не хватает какой-то конфигурации? Я в основном пытаюсь воспроизвести запрос:

SELECT * FROM NVD_VULNERABILITY where nvd_app_id = 25

Что работает так, как задумано в консоли базы данных H2. Как именно работает конечная точка поиска и как мне заставить ее фильтровать как задумано?

Я также хотел бы, чтобы подкачка работала с конечной точкой поиска; прямо сейчас он возвращает все 7k + строк, тогда как конечная точка http://localhost:8080/api/nvdVulnerabilities/ возвращает 20 элементов на страницу

Ответы [ 2 ]

3 голосов
/ 09 июля 2020

Вы можете попробовать:

List<NvdVulnerability> findByNvdApp_Id(Integer id);

Если переменная Integer id существует в вашем классе NvdApp.

0 голосов
/ 09 июля 2020

Изменение запроса репозитория на соответствие ниже:

public interface NvdVulnerabilityRepository extends PagingAndSortingRepository<NvdVulnerability, Long> {
    Page<NvdVulnerability> findByNvdApp_Id(Long id, Pageable pageable);
}

позволяет выполнять поиск по идентификатору, а также разбивать возврат на страницы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...