Как избежать выполнения запроса JPQL ко многим SQL-запросам? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть два объекта Клиент и Процедура. У клиента может быть список процедур, а процедура может быть связана только с одним клиентом.

В клиенте у меня есть временный атрибут nbProcedure, который существует для хранения номера процедуры для клиента.

Я использую данные JPA Spring со следующим запросом:

@Query("SELECT new Client(c, count(p)) 
        FROM Procedure p 
        INNER JOIN p.client c 
        WHERE c.userId = ?1 
        GROUP by c.id")
fun getByUserIdOrderByNameWithNbProcedure(userId: String): List<Client>

Я вижу в журнале, что этот запрос выполняется, но после этого в каждой строке выполняется один запрос для выбора всех свойств клиента.

Как я могу избежать всех запросов по строкам и сохранить выполнение только одного запроса?

Я думаю, мне не хватает конфигурации или неправильного использования new Client(c, count(p))

1 Ответ

0 голосов
/ 01 июля 2019

Это может быть из-за неинициализированных ассоциаций ленивых выборок в сущности. Можно использовать JOIN FETCH вместо JOIN, чтобы избежать нескольких запросов.

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