Встречается на собеседованиях • сегодня

Как решить LazyInitializationException

LazyInitializationException возникает при попытке доступа к лениво загруженной коллекции вне сессии Hibernate. Решения: 1. **Инициализация в транзакции**: ```java // В сервисном слое @Transactional public Order getOrderWithItems(Long id) { Order order = orderRepository.findById(id); order.getItems().size(); // Инициализация коллекции return order; } ``` 2. **Использование Hibernate.initialize()**: ```java Hibernate.initialize(order.getItems()); ``` 3. **FetchType.EAGER** (не рекомендуется для всех случаев): ```java @OneToMany(fetch = FetchType.EAGER) private List items; ``` 4. **EntityGraph** (JPA 2.1+): ```java @EntityGraph(attributePaths = {"items"}) Order findWithItemsById(Long id); ``` 5. **JOIN FETCH в JPQL**: ```java @Query("SELECT o FROM Order o JOIN FETCH o.items WHERE o.id = :id") Order findByIdWithItems(@Param("id") Long id); ``` Лучшая практика - инициализировать коллекции в рамках транзакции, используя подходы 1, 4 или 5.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы