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

    xiaoxiao2022-07-07  146

    一、问题描述

    项目使用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)