Hibernate LazyInitializationException при использовании коллекции на странице Spring JSP

У меня есть такие объекты:

@Entity
@Table(name = "ASSESSMENT")
public class Assessment {

    //All other fields..

    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "assessment")
    @OrderBy(value = "order ASC")
    private List assessmentParts = new LinkedList();

    public List getAssessmentParts() {
        return assessmentParts;
    }

    //All other getters/setters
}

Другой:

@Entity
@Table(name = "ASSESSMENT_PART")
public class AssessmentPart {

    //All other fields

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "ASSESSMENT_ID", nullable = false)
    private Assessment assessment;

    public Assessment getAssessment() {
        return assessment;
    }

    public void setAssessment(Assessment assessment) {
        this.assessment = assessment;
    }

    //All other getters/setters
}

Части оценки лениво загружаются из объекта оценки. У меня также есть метод пружинного контроллера, который является транзакционным и загружает часть оценки из базы данных:

@Transactional
public void doSomething(String partId, Map model) {

    AssessmentPart assessmentPart = //laods a part with entity manager
    Assessment assessment = assessmentPart.getAssessment(); //Getting the assessments

    model.put("assessmentParts", assessment.getAssessmentParts()); //adding all assessments parts into spring model map
}

Однажды я'Мы добавили части оценки в весеннюю модель, они стали доступны на моей странице JSP, и я использую JSTL для их просмотра:


     //Not loading any lazy stuff, just getting an ID of assessment part

Исключение выдается из этой страницы JSP:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: my.package.something.Assessment.assessmentParts, could not initialize proxy - no Session

Как это возможно, если эта коллекция уже была загружена в транзакцию? Я просто пытаюсь перебрать, спящий режим не долженв этот момент ничего не загружается, потому что оно уже загружено. Почему происходит эта странная вещь?

Ответы на вопрос(3)

Ваш ответ на вопрос