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);