具有可选参数的Spring Data JPA查询

时间:2018-03-08 03:46:50

标签: spring-data deltaspike-jpa

我有一个GET端点,它根据以下参数获取数据。 firstName是必需的,rest all是可选的。

{

"firstName:"",
"lastName:"",
"Gender:"",
"city"""

}

我应该如何处理数据库查询?我正在使用Sring Data JPA, 我试过了

findByFirstNameOrLastNameOrGenderOrCity(名字,姓氏,性别,城市)

如果端点的使用者没有发送值,则不确定使用@Query注释的本机sql查询是否可以工作,因为除firstName之外的任何值都可以为null。请帮助

1 个答案:

答案 0 :(得分:0)

如果你需要这样的东西:

GET /myEntities?firstName=bla-bla&lastName=bla-bla&gender=1&city=bla-bla
  

其中firstName是强制性的,其余都是可选的,

那么你可以像这样的查询一样使用:

@Query("select e from MyEntity e where e.firstName = ?1 " +
    "and (?2 is null or e.lastName = ?2) " + 
    "and (?3 is null or e.gender = ?3) " +
    "and (?4 is null or e.city = ?4)")
List<MyEntities> getByFilter(String firstName, String lastName, Boolean gender, String city);