转换json关联集合运行时出现懒加载问题解决方案
2017-11-06 14:06
375 查看
转换json 关联集合问题
运行时出现问题:出现懒加载异常
问题原因
如果需要将集合数据转换为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>
运行时出现问题:出现懒加载异常
问题原因
如果需要将集合数据转换为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>
相关文章推荐
- VS2010 连接 Oracle出现尝试加载 Oracle 客户端库时引发 BadImageFormatException 32位与64位问题解决方案
- VS2010调试“正试图在 OS 加载程序锁内执行托管代码”和运行出现R6034问题解决
- javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题解决起来很简单
- Java运行class文件出现“找不到或无法加载主类” 的问题解决
- 用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,”的解决办法
- Q12:app在iPhone上运行正常,iPad上出现黑边问题解决方案
- javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题解决起来很简单
- Visual Studio 2015 Update 1 成功安装后运行 “出现未能正确加载[XXXX]包,此问题可能是由配置更改或安装另一个扩展导致的。” 可能的解决方法
- opencv+vs2010安装和运行时出现的几个问题与解决办法
- android解决初始加载页面出现带标题的页面问题
- Android studio遇到在真机运行时出现adb not respond if you would like to retry问题解决方法
- webservice 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
- 运行yum时出现/var/run/yum.pid已被锁定,PID为xxxx的另一个程序正在运行的问题解决
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
- 解决SiteWeaver SQL版在windows2008 x64平台下运行出现的缩略图组件无效、邮件发送组件无效和学籍系统出错问题
- 重装win8出现“输入的产品密钥与用于安装的任何可用windows映像都不匹配”问题解决方案
- Ubuntu系统下运行Eclipse出现找不到jre的问题的解决方法
- AS中运行项目时出现Error:Execution failed for task ':app:transformClassesWithDexForDebug'...问题解决
- : 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。 ---> System.BadImageFormatException: 试图加载格式不正确的程序。
- 安装openTLD出现ld libopencv_gpu问题解决方案