Java В спящем режиме с Вопросом о Персистентности---, если FetchType не определяется, каков метод по умолчанию?

Привет парни я являюсь новым для Спящего режима и JPA

Я записал некоторые функции, первоначально, я установил выборку = FetchType. ЛЕНИВЫЙ в классе объекта. Но это дало мне ошибку: "org.hibernate. LazyInitializationException: не мог инициализировать прокси - никакая Сессия"

@OneToMany(cascade = CascadeType.ALL, mappedBy = "logins", fetch=FetchType.LAZY,targetEntity=Invoice.class)
public List<Invoice> getInvoiceList() {
    return invoiceList;
}

public void setInvoiceList(List<Invoice> invoiceList) {
    this.invoiceList = invoiceList;
}

Затем я изменил его для выборки = FetchType. НЕТЕРПЕЛИВЫЙ, это работало fine....., я - wondering what, происходят, если я не объявляю FetchType, действительно В спящем режиме, определяют себя который метод использовать? Или это принято значение по умолчанию НЕТЕРПЕЛИВЫМ??

@OneToMany(cascade = CascadeType.ALL, mappedBy = "logins", fetch=FetchType.EAGER,targetEntity=Invoice.class)
public List<Invoice> getInvoiceList() {
    return invoiceList;
}

public void setInvoiceList(List<Invoice> invoiceList) {
    this.invoiceList = invoiceList;
}

Спасибо!!!!!!!!!

10
задан leon 26 June 2010 в 23:41
поделиться

1 ответ

Мне интересно, что произойдет, если я не объявлю FetchType , определяет ли Hibernate, какой метод использовать? Или это по умолчанию EAGER ??

На самом деле, это поведение не является специфическим для Hibernate, но определяется спецификацией JPA, и вы найдете ответ в спецификации или в javadoc аннотации OneToMany или источники. Из источников:

 / ** (Необязательно) Должна ли ассоциация быть
 * загружается лениво или должно быть загружено с нетерпением. В
 * Стратегия {@link FetchType # EAGER EAGER} - это
 * требование к среде выполнения persistenceprovider
 * что ассоциированные личности должны быть немедленно доставлены.
 * Стратегия {@link FetchType # LAZY LAZY} - подсказка
 * в среду выполнения поставщика сохраняемости.
 * /
FetchType fetch () по умолчанию LAZY;

При этом, хотя существуют вполне законные варианты использования для FetchType.EAGER , использование EAGER только для того, чтобы избежать LazyInitializationException (которое возникает при попытке загрузить ленивую ассоциацию на отдельный объект) - это скорее работа, чем реальное решение.

6
ответ дан 3 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: