Spring 引导 REST 应用程序;使用外键的 findBy 方法

Spring Boot REST application; findBy method using foreign key

使用 Spring Data REST,我有两个模型,NvdApps 与 NvdVulnerabilities

具有一对多关系

我正在尝试添加通过 NvdApp 搜索 NvdVulnerabilities 的功能,因此我的存储库如下所示:

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
    }

当我尝试使用这个端点时,它只是 returns 整个 table,不管我在查询字符串中输入了什么。我试过的 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 数据库控制台中按预期工作。搜索终点究竟是如何工作的,我如何让它按预期进行过滤?

我还想让分页与搜索端点一起工作;现在 returns 整个 7k+ 行,而终点 http://localhost:8080/api/nvdVulnerabilities/ returns 每页 20 项

你可以试试:

List<NvdVulnerability> findByNvdApp_Id(Integer id);

如果 Integer id 变量存在于您的 NvdApp class.

更改存储库查询以匹配以下内容:

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

允许按 id 搜索以及使 return 分页