Hibernate - n + 1 выбор запросов с 1-к-1 - PullRequest
0 голосов
/ 16 марта 2012

Организация отображается на Адрес как 1-к-1:

Организация :

<one-to-one class="Address" constrained="true" name="address" property-ref="organizationId"/>

Адрес :

<many-to-one class="Organization"  name="organization">
          <column name="OrganizationID" not-null="false" unique="true"/>
  </many-to-one>

этот запрос генерирует дополнительный выбор для каждой Организации + 1:

   query = session.createQuery("select o from Organization as o where o.isCool=0").setReadOnly(true);
   organizations = query.list();

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html сообщает fetch="join", но это не имеет значения.Как решить эту проблему?Любая помощь приветствуется.

РЕДАКТИРОВАТЬ В отладчике я вижу, что адрес на самом деле загружен не лениво, я понятия не имею, почему.

1 Ответ

1 голос
/ 16 марта 2012

Поскольку вы используете HQL для извлечения ваших вещей, было бы не просто использовать аннотацию или атрибут, который вы пытаетесь, чтобы избежать проблемы n + 1.

Правильным решением было бы использование в вашем запросе предложения «FETCH JOIN». Вы можете перейти по следующей ссылке для более подробной информации: http://www.realsolve.co.uk/site/tech/hib-tip-pitfall.php?name=n1selects

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