Это пост № 4 из серии “Запрос вашего хранилища Spring Data JPA”.
Давайте резюмируем: к настоящему времени у вас должно быть приложение, подобное этому . Внешний интерфейс (Thymeleaf + очень плохой дизайн пользовательского интерфейса) не имеет значения, так как наша цель – понять несколько способов запроса вашего хранилища Spring Data JPA. Несмотря на это, я добавил Bootstrap , чтобы облегчить работу глазам.
Давайте добавим город , грабАндГо и активный свойства для нашего Ресторана юридического лица. Вы можете увидеть, как на этот коммит .
Допустим, теперь вы хотите создать новый пользовательский поиск в нашей потрясающей области поиска:
При этом выполняется поиск активных ресторанов с включенным Grab’n’Go в городе, указанном пользователем.
Да, если вы следите за серией, вы уже знаете, как это сделать с помощью методов запроса. Вот, держи:
- Создайте новый метод в интерфейсе RestaurantRepository:
ListfindAllByActiveTrueAndGrabngoTrueAndCityContaining(String city);
Это сработает, но посмотрите на размер имени метода! Давай! Представьте, что вам приходится использовать это огромное имя метода во всем вашем коде. Это не чисто !
Это точный сценарий использования запроса JPQL. Давайте проведем рефакторинг приведенного выше кода:
- Переименуйте метод во что-то более приемлемое, например
активный захват и переход по городу. - Добавить аннотацию
@Запроснад именем метода. - Создайте свой собственный запрос JPQL.
Вот результат:
@Query("from Restaurant r where r.active = true and r.grabngo = true and r.city like %:city%")
List activeGrabngoByCity(String city);
Обратите внимание, что вам не обязательно следовать правилам методов запроса, чтобы назвать метод. Вы сообщаете Spring, что предоставляете запрос для этого метода с помощью аннотации @Query .
На данный момент это все, что я собираюсь рассказать. Вы можете взглянуть на эту документацию из Hibernate, чтобы сделать свои собственные классные вещи, JPQL очень мощный!
Рабочее приложение находится здесь (подождите, пока Heroku загрузит приложение, на бесплатном уровне это займет несколько секунд).
Добавляет начальную загрузку: 020142 . Добавляет новые свойства в ресторан: ab7a2e . |/Факторы, влияющие на JPQL: 8758bf .
брунодруговик/jpa-запросы-запись в блоге
Демонстрационный проект для публикации в блоге о JPA (Spring Data).
Оригинал: “https://dev.to/brunodrugowick/using-jpql-with-spring-data-jpa-48c0”