Как заставить ленивую загрузку сущностей на определенных условиях - PullRequest
0 голосов
/ 16 июня 2010

У нас есть класс JPA @Entity (скажем, пользователь), который имеет ссылку @ManyToOne (скажем, адрес), загруженную с помощью опции EAGER, которая, в свою очередь, загружает свои собственные поля @ManyToOne (скажем, страну) способом EAGER.

Мы используем интерфейс EntityQuery для подсчета списка пользователей на основе критериев поиска, при такой загрузке загружаются все поля @ManyToOne, помеченные как EAGER. Но чтобы выполнить EntityQuery.resultCount (), мне на самом деле не нужно загружать поля @ManyToOne. Есть ли способ предотвратить загрузку полей EAGER в таких случаях, чтобы мы могли избежать ненужных объединений?

Ответы [ 2 ]

4 голосов
/ 16 июня 2010

Если вы хотите получить количество строк только , используйте агрегатную функцию COUNT вместо getResultCount().

В противном случае вы можете переключить поведение по умолчанию на lazyи загрузите предметы, позвонив по номеру Hibernate.initialize(entity).Но это утомительно.

2 голосов
/ 16 июня 2010

Почему бы вам не использовать агрегатные функции (COUNT в вашем случае), если вам нужно только количество записей?

...