Запрос построителя критериев jpa отключить активное получение - PullRequest
1 голос
/ 07 апреля 2011

У меня есть объект person, у которого есть список адресов, и в сопоставлении он помечен для быстрого выбора.

У меня есть запрос построителя критериев, где, скажем, я хочу получить объект person, но не выбирая адрес.Как отключить нетерпеливое фетирование в запросе критериев в одиночку.есть ли метод?

Реальный код не так прост ... это просто для примера.

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

Обычно лучше использовать LAZY-выборку в отображении, а затем извлекать ее, когда это необходимо, используя опцию JPQL «join fetch».

В JPA вы можете просто выбрать нужные данные изсущность, а не вся сущность, тогда вы можете избежать отношений.Вы также можете использовать запрос конструктора для создания экземпляров оболочки (обратите внимание, что они не будут управляться).

Одним из способов сделать ленивые отношения в запросе является использование групп извлечения.JPA не поддерживает группы извлечения, но некоторые провайдеры JPA, такие как EclipseLink, поддерживают.В EclipseLink вы можете определить группу выборки, используя аннотацию @FetchGroup или подсказки запроса.

0 голосов
/ 07 апреля 2011

Я думаю, что это возможно. Из документации OpenJPA :

Вы можете указать режим выборки подкласса по умолчанию для отдельного класса с расширением метаданных, описанным в Разделе 9.1.1, «Режим выборки подкласса». Обратите внимание, однако, что вы не можете «обновить» режим выборки во время выполнения с помощью настроек вашего класса. Если режим выборки во время выполнения не равен ни одному, не будет никакой активной выборки данных подкласса, независимо от настроек метаданных.
Это относится и к расширению метаданных режима активной выборки (см. Раздел 9.2.1, «Режим активной выборки»). Вы можете использовать это расширение, чтобы отключить активную выборку в поле или объявить, что коллекция будет скорее использовать объединения, чем параллельные выборки, или наоборот

Раздел 9.2.1 здесь .

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