Spring Data JPA:如何形成条件查询?

Posted

技术标签:

【中文标题】Spring Data JPA:如何形成条件查询?【英文标题】:Spring Data JPA: How to form a conditional query? 【发布时间】:2022-01-06 23:04:23 【问题描述】:

考虑一个包含 4 个字段的表:id、name、age、date。现在我想使用这些字段查找数据库。所以这很简单,我可以做到:

@Query("select d from data d where d.name=:name and d.age=:age and d.date=:date")

但问题是,姓名、年龄和日期是可选字段,即年龄、姓名、日期可以为空。如果年龄为空,那么我应该使用名称和日期查找数据库,如果年龄和名称为空,那么我应该单独使用日期查找数据库,依此类推...

是否可以通过简单的方式实现这一点,而不是为每个场景形成不同的查询?因为我正在处理的真实场景有 6-7 个可选字段,并且为每个字段形成不同的查询看起来非常奇怪。

【问题讨论】:

使用 criteria queries 或 query by Example 【参考方案1】:

对于可选字段,使用这个:@Query("select d from data d where (:name is null or d.name=:name) and (:age is null or d.age=:age) and (:日期为空或 d.date=:date)")

【讨论】:

以上是关于Spring Data JPA:如何形成条件查询?的主要内容,如果未能解决你的问题,请参考以下文章

spring Data jpa 一对多关联 动态查询怎么写

spring data jpa 的分页以及条件查询

Spring Data JPA Repository:如何有条件地获取子实体

Spring Data 系列学习Spring Data JPA 自定义查询,分页,排序,条件查询

Spring Data 系列学习Spring Data JPA 自定义查询,分页,排序,条件查询

Spring Data JPA中带条件的分页查询