在视图中,entitymanager已关闭,因此集合中的元素无法在其中检索属性。您在控制器中编写的代码不会初始化集合中的元素(这是一个LAZY集合),而只会初始化集合(而不是其中的元素)。
通过
OpenEntityManagerInViewFilter在您的Web配置中配置,可以强制entitymanager保持打开状态。
或更改您的控制器代码以包含一个调用
Hibernate.initialize以正确初始化您的集合。
@Transactionalpublic void doSomething(String partId, Map<String, Object> model) { AssessmentPart assessmentPart = //laods a part with entity manager Assessment assessment = assessmentPart.getAssessment(); //Getting the assessments Hibernate.initialize(assesment.getAssesmentParts()); // Init collection model.put("assessmentParts", assessment.getAssessmentParts()); //adding all assessments parts into spring model map}要么创建一个自定义查询,以强制获取集合。



