SlandShow
@SlandShow
70% of my body is made of movies.

Почему происходит ошибка Lazy-инициализации у энтити?

У меня есть энтити: Train и Seat. Они связаны реляцией one-to-many.

Train
@Entity
@Table(name = "train")
public class Train {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Column(name = "name")
    private String name;

    @OneToMany(mappedBy = "train", cascade = CascadeType.ALL)
    private Set<Seat> seats;
    ...
    // Геттеры и сеттеры


Seat
@Entity
@Table(name = "seat")
public class Seat {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Column(name = "carriage")
    private Integer carriage;

    @Column(name = "seat")
    private Integer seat;

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "train_id", nullable = false)
    private Train train;
    ...
    // Другой код


При попытке получить поезд у меня возникает ошибка:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.slandshow.models.Train.seats, could not initialize proxy - no Session


В чём проблема?
  • Вопрос задан
  • 8127 просмотров
Решения вопроса 1
@Yuvis
Изучаю java
У вас стоит FetchType.EAGER инициализация, а не LAZY
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@drKred
Привет! проблема не в ленивой инициализации, а судя по ошибке could not initialize proxy - no Session нет сессии подключения к бд у тебя https://examples.javacodegeeks.com/enterprise-java...
Ответ написан
Комментировать
@Div100
Sland Show
Сессия хибернейтовскай уже умерла, в либо сделай Eager(что не очень хороршо).
Либо использую хб ютилс какой-нибудь для управления сессией.
Либо в методе сервиса чреез который получаешь это дело - сделай его @Transactional read,
тогда должно будет в одной сессие проходить.
Если не получится пиши - разберемся
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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