是否可以在用户定义的范围内获取数据[int start record -int last record]?
在我的情况下,用户将在查询字符串中定义,他想要在其中获取数据的范围。 我已经尝试过这样的事情
Pageable pageable = new PageRequest(0, 10);
Page<Project> list = projectRepository.findAll(spec, pageable);
spec 是我定义的规范,但不幸的是,这无济于事。 可能是我在这里做错了什么。
我见过其他 spring jpa 提供的方法,但没有什么帮助。
用户可以输入类似 localhost:8080/Section/employee 的内容吗?范围{"columnName":name,"from":6,"to":20}
所以这表示要获取员工数据,它会获取前 15 条记录(按 columnName 排序),到目前为止并不重要。
如果您能建议我一些更好的东西,那就太好了。如果您认为我没有提供足够的信息,请告诉我,我会提供所需的信息。
更新:我不想使用 native 或创建查询语句(直到我没有任何其他选项)。 可能是这样的:
Pageable pageable = new PageRequest(0, 10);
Page<Project> list = projectRepository.findAll(spec, new pageable(int startIndex,int endIndex){
// here my logic.
});
如果你有更好的选择,也可以向我推荐。
谢谢。
最佳答案
您的方法不起作用,因为 new PageRequest(0, 10);
没有按照您的想法进行。如 docs 中所述,输入参数是page
和size
,而不是limit和offset。
据我所知(如果我错了,有人会纠正我),默认 SrpingData 存储库中没有“开箱即用”的支持。但是您可以创建 Pagable
的自定义实现,这将采用限制/偏移参数。这是基本示例 - Spring data Pageable and LIMIT/OFFSET
关于spring - 如何使用用户定义的偏移量和限制(范围)通过 Spring 数据 JPA 查询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525437/