Как реализовать длинный / сложный запрос с помощью spring-data-jpa 2.1 - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужен совет по реализации весеннего jpa-запроса.Мой запрос сложен из-за длины ввода.В качестве входных данных я имею: 15 условие - проверить равенство, если не ноль;2 условие - проверить, если не ноль
Кроме того, вывод должен быть доступным для вывода на страницу.

Я знаю, что это можно решить с помощью стандартного PagingAndSortingRepository, например:

Page<A> findAllByParam1AndParam2AndParam3Between...(@Nullable String param1, @Nullable String param2, @Nullable Integer param3,...) 

, но посмотрим, какПока мой вклад в это решение выглядит неясным, и я не думаю, что метод с таким большим количеством параметров является хорошим решением.Я также думал о findAll по Примеру, но это поддерживает равенство, а не условие восемнадцати.

Есть ли другие варианты?Единственный способ - создать собственный запрос с помощью CriteriaBuilder?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Производные запросы, то есть те, которые получают фактический запрос из имени метода, являются неправильным инструментом для таких длинных или сложных запросов, потому что получающееся имя становится непригодным для использования.

Альтернативы, которые вы должны рассмотреть, являются

0 голосов
/ 07 февраля 2019

У вас есть следующие варианты, чтобы сделать это.1) использовать hql, для этого обязательно, чтобы все таблицы отображались как объекты jpa. 2) использование нативных запросов, недостатком здесь является то, что это влияет на переносимость приложения, но если вы уверены, что ваше приложение не собираетсячтобы перейти на любую другую базу данных, тогда вы можете использовать это 3) использовать построитель критериев

Edit-> Обнаружено, что @Query может использоваться для выполнения как SQL, так и JPQL.

Пожалуйста, следуйтессылка ниже для получения дополнительной информации

https://www.baeldung.com/spring-data-jpa-query

Использование запросов также в некоторых книгах по сертификации разработчиков весной.

Надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...