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&amp;size=5&amp;sort=priority,desc&amp;orderStatus=submitted

是否可以在不进行任何额外工作的情况下搜索不相等的值?例如,所有 orderStatus 不等于“已提交”的订单。

我注意到Predicate 接口有一个not() 方法,但我不确定它是否相关。

【问题讨论】:

【参考方案1】:

对于这种情况,您应该做一些工作。有不同的方法可以做到这一点。请参阅有关 JPA 的 Spring 文档和示例。

例如您可以使用@Query 或specifications。

【讨论】:

【参考方案2】:

您可以尝试“从方法名称创建查询”。

假设您要按订单状态搜索订单已提交,

List&lt;Order&gt; findByOrderstatusNot(String orderstatus);

【讨论】:

这也适用于分页/排序吗?我还需要提供 Sort 和 Pageable 作为参数吗? 如果您的意思是按顺序排序,则可以使用它,例如 findByOrderstatusOrderByOrderId,但分页并不简单,因为这涉及 limit偏移

以上是关于Spring Boot REST/JPA 服务中的不相等查询的主要内容,如果未能解决你的问题,请参考以下文章

@SpringBootTest 用于非弹簧启动应用程序

无法将 spring-boot 2 服务连接到不同容器中的 mysql

Spring Boot 如何部署到 Linux 中的服务

Spring Cloud Spring Boot mybatis分布式微服务云架构使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

Spring Cloud Spring Boot mybatis分布式微服务云架构使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

Docker 中的 Consul 和 Spring Boot 服务 - 不取消注册