Spring Boot REST/JPA 服务中的不相等查询
Posted
技术标签:
【中文标题】Spring Boot REST/JPA 服务中的不相等查询【英文标题】:Not Equals Query on Spring Boot REST/JPA Service 【发布时间】:2020-05-08 21:33:44 【问题描述】:我是 Spring Boot 的新手,我创建了一个使用 JPA 的非常基本的 REST 服务,并为我的模型上的 CRUD 和查询操作公开了 RepositoryRestResource:
@RepositoryRestResource
public interface CatalogueOrderRepository extends JpaRepository<CatalogueOrder, Long>,
QuerydslPredicateExecutor<CatalogueOrder>
使用它,我可以执行涉及搜索值、分页和排序的查询,例如:
?page=0&size=5&sort=priority,desc&orderStatus=submitted
是否可以在不进行任何额外工作的情况下搜索不相等的值?例如,所有 orderStatus 不等于“已提交”的订单。
我注意到Predicate
接口有一个not()
方法,但我不确定它是否相关。
【问题讨论】:
【参考方案1】:对于这种情况,您应该做一些工作。有不同的方法可以做到这一点。请参阅有关 JPA 的 Spring 文档和示例。
例如您可以使用@Query
或specifications。
【讨论】:
【参考方案2】:您可以尝试“从方法名称创建查询”。
假设您要按订单状态搜索订单已提交,
List<Order> findByOrderstatusNot(String orderstatus);
【讨论】:
这也适用于分页/排序吗?我还需要提供 Sort 和 Pageable 作为参数吗? 如果您的意思是按顺序排序,则可以使用它,例如 findByOrderstatusOrderByOrderId,但分页并不简单,因为这涉及 limit和偏移。以上是关于Spring Boot REST/JPA 服务中的不相等查询的主要内容,如果未能解决你的问题,请参考以下文章
无法将 spring-boot 2 服务连接到不同容器中的 mysql
Spring Cloud Spring Boot mybatis分布式微服务云架构使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程
Spring Cloud Spring Boot mybatis分布式微服务云架构使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程