运行时出现问题:出现懒加载异常
问题原因
如果需要将集合数据转换为json返回
第一种:在get方法上添加@JSON(Serialize=false)注解,在转json的过程中忽略该属性。
@JSON(serialize=false)
public List<InOutStorageInfo> getInOutStorageInfos() {
return inOutStorageInfos;
}
第二种:在业务层(即Session关闭之前)手动查询数据 被加载
第三种:配置立即抓取 (在实体中配置@LazyCollection,表示立即检索),查询TransitInfo对象的同时,立即查询InOutStorageInfo的对象。
@OneToMany
@JoinColumn(name = "C_TRANSIT_INFO_ID")
@OrderColumn(name = "C_IN_OUT_INDEX")
@LazyCollection(LazyCollectionOption.FALSE)
private List<InOutStorageInfo> inOutStorageInfos = new ArrayList<InOutStorageInfo>();
第四种(选择使用): 使用spring提供的OpenSessionInViewFilter的过滤器,如果使用spring的jpa,可以使用OpenEntityManagerInViewFilter的过滤器。这里注意:需要放置到struts2的过滤器的前面
<!-- 解决懒加载的问题,该过滤器放置到struts2的过滤器的前面 -->
<filter>
<filter-name>OpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>