Я сталкиваюсь со столь обсуждаемым ""
. Я работаю над приложением с весенней загрузкой, используя hibernate.
Насколько я знаю, если атрибут сущности помечен какFetchType.LAZY, с необходимостью иметь сеанс Hibernate, чтобы иметь возможность инициировать соответствующий запрос для получения связанной сущности.
Ниже приведен метод, который извлекает список сущностей из родительской сущности:
@Transactional
public List<Portfolio> getSharedPortfolios(String userName){
User user = userService.getUserActive(userName);
List<Portfolio> sharedPortfolios = user.getSharedPortfolios();
//logger.debug("Number of Shared Portfolios: " + sharedPortfolios.size()); <======
return sharedPortfolios;
}
Метод getSharedPortfolios вызывается из контроллера и получает «org.hibernate.LazyInitializationException», затем пытается получить доступ к этому списку (PersistentBag)
Существо getSharedPortfolios метод, аннотированный аннотацией @Transactional, я ожидал, что при выполнении user.getSharedPortfolios () (sharedPortfolios - Lazy Fetch List) соответствующий список инициализируется.Но этого не происходит.
Может кто-нибудь объяснить мне, почему?И почему, если я раскомментирую строку журнала, которая печатает размер этого PersistentBag, исключение не выдается?
Нужно ли в этом случае явно инициализировать его с помощью EntityManager?
Большое спасибо.