使用查询参数过滤结果

Filter Results Using Query Parameter

我正在尝试使用 @Param annotation for a custom query I built using Spring Data JPA's Query Creation,这样当我传递查询参数 ?organizationId=2 时,只会返回具有与给定参数匹配的组织 ID 的任务。

@RepositoryRestResource(collectionResourceRel = "tasks", path = "tasks")
public interface TaskRepository extends JpaRepository<Task, Long> {

    List<Task> findByOrganizationId(@Param("organizationId") Long organizationId);
}

问题是,当我访问 /tasks?organizationId=2@RepositoryRestResource 路径时,它似乎正在调用 /tasks 公开的默认 List<Task> findAll(); 方法,所有任务返回。

如何使 Spring 将请求定向到我的自定义方法?

所有查询方法资源都暴露在搜索资源下。 (有关详细信息,请参阅 here。)

http://localhost:8080/tasks/search/ 应该会为您提供可用搜索端点的列表。一个应该是:http://localhost:8080/tasks/search/findByOrganizationId,您可以对其应用参数化搜索。