JPA-запрос Spring Data с необязательными параметрами

У меня есть конечная точка GET, которая выбирает данные на основе следующих параметров. firstName является обязательным, а остальные - необязательными.

{

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

}

Как я должен подходить к запросу базы данных? я использую Sring Data JPA, я пытался

findByFirstNameOrLastNameOrGenderOrCity(FirstName, LastName, Пол, Город)

Не уверен, что собственный SQL-запрос с использованием аннотации @Query будет работать, поскольку любое из значений, кроме firstName, может быть нулевым, если потребитель конечной точки не отправляет значения. Пожалуйста, помогите

1 ответ

Если вам нужно что-то вроде этого:

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);
Другие вопросы по тегам