Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 4
Регистрация: 05.05.2017
Сообщений: 521

lazyInitializationException как с ней бороться?

04.04.2020, 01:07. Показов 1606. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для доступа к данным использую JpaRepository. При Lazy загрузке вылетает lazyInitializationException. Прочитал, что можно пометить метод, где идет обращение @Transactional - но это не помогло

Java
1
2
3
4
5
6
7
8
9
10
11
12
@Async
public void generate(int generateJobId){
    try {
        jobInfoService.setStatus(generateJobId,"IN_PROGRESS");
        List<Section> sections = sectionService.getAll();
        String filepath = helper.generateXlsx(sections, generateJobId);
        jobInfoService.setFilepath(generateJobId, filepath);
        jobInfoService.setStatus(generateJobId,"DONE");
    } catch (Exception e) {
        jobInfoService.setStatus(generateJobId,"ERROR");
    }
}
Репозиторий

Java
1
2
3
4
@Repository
public interface SectionRepository extends JpaRepository<Section, Long> {
    List<Section> findAllByGeologicalClasses_codeLikeIgnoreCase(String code);
}
В одном из методов идет обращение к связанным полям и вылетает исключение no Session. Как открыть сессию и загрузить данные?

Java
1
2
3
4
5
6
7
8
@Transactional
int getMaxLength(List<Section> sections){
    Comparator<Section> comparator = Comparator.comparingInt(s -> s.getGeologicalClasses().size());
    Hibernate.initialize(sections);
    int maxSize = sections.stream().max(comparator).get().getGeologicalClasses().size();
 
    return maxSize;
}
Единственное, что пришло в голову это создать ещё один метод в сервисе прогружающий данные

Java
1
2
3
4
5
6
7
8
9
10
11
@Transactional(readOnly = true)
public List<Section> getAll(){
    return repository.findAll();
}
 
@Transactional(readOnly = true)
public List<Section> getAllFullData(){
    List<Section> sections = repository.findAll();
    sections.forEach(section -> section.getGeologicalClasses().size());
    return sections;
}
Как это реализовать по нормальному?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2020, 01:07
Ответы с готовыми решениями:

Жара: как с ней бороться
Наступила летняя пора уже давно. Жара порядка +36, невыносимо совершенно. Водоёмов как таковых в городе нет, вернее, они есть, но купаться...

Что за ошибка и как с ней бороться?
Вообщем у меня нормально открывается, другим передаю, у них лезет вот такая ошибка

Что это за ошибка? и как с ней бороться...
Пытаюсь установить компонент DevExpress... при попытке установить пишет вот такую ошибку: Что не так?

4
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
04.04.2020, 03:27
https://vladmihalcea.com/the-b... exception/
1
1 / 1 / 4
Регистрация: 05.05.2017
Сообщений: 521
04.04.2020, 12:28  [ТС]
Получается лучший выход в репозитории добавить запрос
Java
1
2
3
4
5
6
7
@Repository
public interface SectionRepository extends JpaRepository<Section, Long> {
    @Query("SELECT * FROM section e JOIN FETCH e.geologicalClasses")
    List<Section> findAllFullData();
 
    List<Section> findAllByGeologicalClasses_codeLikeIgnoreCase(String code);
}
0
25 / 21 / 6
Регистрация: 10.12.2018
Сообщений: 115
06.04.2020, 21:48
убери ленивую загрузку в entity
0
1 / 1 / 4
Регистрация: 05.05.2017
Сообщений: 521
07.04.2020, 15:47  [ТС]
JavaDoc, это очевидное решение, но мне нужна ленивая загрузка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2020, 15:47
Помогаю со студенческими работами здесь

Ошибка ORA-04028, как ней бороться?
Натолкнулся на такую вот ошибку. Возникает при попытке выполнить запрос. ORA-04028 cannot generate diana for object...

Лишняя прозрачность .png и как с ней бороться
При вставке в форму пиктур бокса с пинговским имагом он становится излишне прозрачным, то есть почти полностью. Как это исправить?

Что за ошибка такая и как с ней бороться?
мож где-то надо timeout увеличить, или это sqlserver просто повис? Exception Details: System.Data.SqlClient.SqlException: Timeout...

Горизонтальная полоса прокрутки и как с ней бороться
Доброго времени суток. Столкнулась с ситуацией, что на маленьких размерах экранов на странице возникает совсем небольшая горизонтальная...

Постоянная сборка мусора и как с ней бороться
Здравствуйте. Помогите полауйста: пишу небольшую игру (змейку, наверное уже всем надоел с ней), проблема в том, что каждые 10 секунд...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки на предмет заполнения реквизитов реализован с целью установки значения по умолчанию,. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru