Hibernate генерирует дополнительный запрос - PullRequest
1 голос
/ 31 декабря 2010

У меня есть 2 таблицы А и В. Я пишу hql как a.key =? и a.id = b.id

Создает дополнительный запрос, чем необходимо.

Первый запрос from - получить элементы, соответствующие которым дают a.key (179 элементов). Затем он выполняет тот же запрос 4 раза. первая итерация принимает 100 параметров в предложении «in», затем 50, затем 25 и затем 4.

Я не понимаю, почему он не может выполнить запрос на покупку, давая 179 элементов в одном запросе

1 Ответ

3 голосов
/ 31 декабря 2010

В ваших отношениях от А до Б вы, скорее всего, имеете:

batch-size="100"

и, возможно:

fetch="select"

, вы можете изменить это на:

fetch="join"

или увеличьте размер пакета до 200 и посмотрите, что произойдет.

Обратите внимание, что часть a.id=b.id вашего запроса звонит в колокольчик о том, что ваш дизайн OO и отображение ORM неверны.Вам нужно использовать отношения и позволить Hibernate сделать работу (в данном случае объединений) за вас.Если это так, то приведенные выше предложения не применимы до тех пор, пока вы правильно не сопоставите свои сущности.

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