По умолчанию постоянные свойства загружаются с нетерпением, и вы не можете управлять этим из JPQL.Однако вы можете попробовать , чтобы изменить поведение по умолчанию и сделать photo
ленивым с аннотацией Basic
.Из спецификации JPA:
9.1.18 Основная аннотация
Основная аннотация - это простейший тип отображения на столбец базы данных.Аннотация Basic может быть применена к постоянному свойству или переменной экземпляра любого из следующих типов: примитивные типы Java, обертки примитивных типов, java.lang.String, java.math.BigInteger, java.math.BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp, byte [], Byte [], char [], Character [], enums и любые другие типы.который реализует Сериализуемый.Как описано в разделе 2.1.6, использование основной аннотации является необязательным для постоянных полей и свойств этих типов.
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface Basic {
FetchType fetch() default EAGER;
boolean optional() default true;
Перечисление FetchType
определяет стратегии получения данных из базы данных:
public enum FetchType { LAZY, EAGER };
Стратегия EAGER
- это требование времени выполнения провайдера постоянства, что данные должны извлекаться с нетерпением.Стратегия LAZY
- это подсказка для среды выполнения персистентного провайдера о том, что данные должны извлекаться лениво при первом обращении к ним.Внедрение позволяет быстро получать данные, для которых была указана стратегия LAZY
.В частности, отложенная выборка может быть доступна только для Basic
отображений, для которых используется доступ на основе свойств.
Но, как упоминалось вspec, это просто подсказка и может не поддерживаться.В этом случае альтернативой может быть использование лениво загруженной обязательной однозначной ассоциации с другим объектом (содержащим большой двоичный объект).