如何< Employee>使用Spring JPA返回Stream,同时限制返回的结果?

ds97pgxw  于 2023-08-05  发布在  Spring
关注(0)|答案(1)|浏览(102)

我有一个JPA存储库,我正在从查询方法中流式传输结果:

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
    @Query("SELECT * FROM EmployeeEntity")
    Stream<Employee> streamEmployees();
}

字符串
理想情况下,我希望能够使用参数动态地设置流的限制:

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
    @Query("SELECT * FROM EmployeeEntity limit :limit")
    Stream<Employee> streamEmployees(@Param("limit") int limit);
}


有可能吗?我知道你可以使用流的返回类型,但是我想限制返回的结果。我想避免使用原生查询。

kcrjzv8t

kcrjzv8t1#

您可以使用可分页的类,而不是使用可能引发漏洞的查询,该类将包含结果作为可以更改为流的内容。创建页面:

Pageable page = PageRequest.of(pageNo,sizeNo);

字符串
jpa方法可以是:

Page<Employee> findAll(Pageable page);


因此您可以将页面设置为零,并将大小设置为您想要的限制。
更多说明:页面继承自Slics,Slics继承自Streamable。所以你可以从Page对象调用stream()函数。

相关问题