hibernate懒加载和json插件冲突问题

一、问题描述

项目使用ssh框架,当获得一个list,然后用Gson插件转化为json时候出问题。出问题代码如下

public String chooseCustomer() {
	//1、通过service层获得顾客列表
	List<Customer> list = customerService.chooseCustomer(likeString);
	//2、将顾客列表转化为json数据
	Gson gson = new Gson();
	String json = gson.toJson(list);
	//3、将json返回到客户端
	HttpServletResponse response = ServletActionContext.getResponse();
	response.setContentType("application/json;charset=utf-8");
	try {
		response.getWriter().write(json);
	} catch (IOException e) {
		e.printStackTrace();
	}
	return null;
}

使用Debug后发现:

1、list获得到了数据

2、代码执行到2和3之间的两行代码的时候,就出问题了。既不报错,后面的代码也不执行了。

(真TM,你倒是给我报个错啊)

二、问题解决

方式一:然后,我想起了hibernate的懒加载是不是和Gson转换起冲突了。customer对象默认是lazy加载,而且里面有引用类型的属性,而且该对象也是默认懒加载。

我没有修改customer的lazy加载。只是让customer里面的引用类型对象改为不是懒加载。

然后就TM没有问题了。

方式二:使用Gson的时候设置那个引用属性不转换。

三、总结

1、hibernate懒加载,当调用get方法的时候,才会加载该对象。

2、当调用Gson转换的时候并没有调用customer里面引用类型的get方法,只调用了customer里面的get方法,所以会报错。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值