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

ima*_*yle 5 mysql spring jpa spring-data-jpa spring-boot

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

@Query("select d from data d where d.name=:name and d.age=:age and d.date=:date")
Run Code Online (Sandbox Code Playgroud)

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

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

小智 14

对于可选字段,请使用:

@Query("select d from data d 
         where (:name is null or d.name=:name) 
           and (:age is null or d.age=:age)
           and (:date is null or d.date=:date)") 
Run Code Online (Sandbox Code Playgroud)