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

标签 spring spring-mvc spring-data-jpa spring-data

是否可以在用户定义的范围内获取数据[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 中所述,输入参数是pagesize,而不是limit和offset。

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

关于spring - 如何使用用户定义的偏移量和限制(范围)通过 Spring 数据 JPA 查询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525437/

相关文章:

spring - 如何使用 netflix-eureka 获得注册的微服务

java - Spring和java中Environment对象初始化后如何调用方法?

spring - Grails/Spring RememberMe对同一用户+ session 并发的多个浏览器的处理

java - 如何以编程方式加载 Spring webflow 流并获取其内容

java - spring data jpa无法插入

java - 为嵌套对象创建自定义 Spring Data JPA 查询时获取 IllegalArgumentException

java - 通过 Spring Boot 连接 mysql 时出现时区问题,相当于 Mitteleuropäische Zeit

java - 将 Spring Boot 与现有 Spring 应用程序集成

java - JdbcTemplate INSERT查询问题

java - Spring Boot事务管理器建议回滚所有异常