Существует таблица с именем zipcode
, в которой столбцы обозначены id, zip, city, state
.
. В нашем случае мы хотим получить записи на основе либо id
, либо zip
, либо city
, либо state
.
Общий SQL запрос выглядит следующим образом:
SELECT * FROM zipcode WHERE id=id AND zip=zip AND city=city AND state=state;
Если мы хотим получить определенное состояние, то мы заменим значение состояния с указанным именем..
SELECT * FROM zipcode WHERE id=id AND zip=zip AND city=city AND state='California';
Если нам нужен определенный город, то мы можем написать
SELECT * FROM zipcode WHERE id=id AND zip=zip AND city='Los Angles' AND state=state;
Проблема с JPA для Spring Data заключается в том, что если мы напишем метод
@Query(value = "SELECT * FROM zipcode WHERE id=?1 AND zip=?2 AND city=?3 AND state=?4", nativeQuery = true)
List<Zipcode> getZipCodes(Integer id, Integer zip, String city, String state)
Я хочу получить все города, но только определенное государство, тогда я не могу использовать этот метод, например, как я могу использовать вышеупомянутый запрос SQL, где нам просто нужно заменить значение столбца.
Как мы можем добиться этого в Spring Data JPA, используя собственный запрос?