如何使用用户定义的偏移量和限制(范围)通过Spring数据JPA查询数据

les*_*nar 10 spring spring-mvc spring-data spring-data-jpa

是否可以获取用户定义范围内的数据[int starting record -int last record]?

在我的情况下,用户将在查询字符串中定义他想要获取数据的范围.我尝试过这样的事情

Pageable pageable = new PageRequest(0, 10);
    Page<Project> list = projectRepository.findAll(spec, pageable);
Run Code Online (Sandbox Code Playgroud)

spec是我定义的规范,但不幸的是,这没有帮助.可能是我在这里做错了.

我见过其他spring jpa提供的方法,但没有什么帮助.

用户可以输入类似localhost:8080/Section/employee的内容吗?范围{ "COLUMNNAME":名称 "从":6, "到":20}

所以这表示获取员工数据并且它将获取前15条记录(按columnName排序)并不重要.

如果你能给我一些更好的建议,如果你认为我没有提供足够的信息请告诉我,我会提供所需的信息.

更新:我不想使用本机或创建查询语句(直到我没有任何其他选项).可能是这样的:

Pageable pageable = new PageRequest(0, 10);
        Page<Project> list = projectRepository.findAll(spec, new pageable(int startIndex,int endIndex){
// here my logic.

});
Run Code Online (Sandbox Code Playgroud)

如果你有更好的选择,你也可以建议我.

谢谢.

Kej*_*jml 10

你的方法不起作用,因为你做的不是new PageRequest(0, 10);你想的.如文档中所述,输入参数是pagesize,而不是限制和偏移.

据我所知(如果我错了,有人会纠正我),在默认的SrpingData存储库中没有"开箱即用"的支持.但是你可以创建自定义实现Pagable,它将采用限制/偏移参数.这是基本的例子 - Spring数据Pageable和LIMIT/OFFSET