`

延迟加载问题,用json过滤解决

阅读更多

2014-06-16 15:58:49,761 [http-8080-3] ERROR [org.hibernate.LazyInitializationException] - failed to lazily initialize a collection of role: com.wiseweb.pom.entity.Role.docInfos, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.wiseweb.pom.entity.Role.docInfos, no session or session was closed
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383)
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375)
    at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:368)
    at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111)
    at org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:272)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:158)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:390)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231)
    at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:390)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231)
    at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
    at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
    at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
    at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
    at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)

··················································

Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.wiseweb.pom.entity.Role.docInfos, no session or session was closed
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383)
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375)
    at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:368)
    at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111)
    at org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:272)
    at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:158)
    at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
    at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:390)
    at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231)
    ... 110 more

今天做项目遇到这个问题,第一反应是延迟加载问题,应该是没有设置lazy-init,过去看看确实没有设置,再到Action中查看报错方法,发现方法根本就没有使用这个,研究了好长时间发现我的实体是存在session中的,类似于一个json串,所以在使用的时候就会报这个错,最终的解决方法是做json过滤,把报错的这个字段给过滤掉就不会有这个问题了。过滤的代码如下:

loginRole = ((LoginUser) ((SecurityContext) ServletActionContext
                .getRequest().getSession().getAttribute(
                        "SPRING_SECURITY_CONTEXT")).getAuthentication()
                .getPrincipal()).getRole();
       
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setRootClass(Role.class);
        jsonConfig.setJsonPropertyFilter(new net.sf.json.util.PropertyFilter() {
           
            @Override
            public boolean apply(Object arg0, String arg1, Object arg2) {
                if(arg1.equals("docInfos")){
                    return true;
                }else {
                    return false;
                }
            }
        });
        net.sf.json.JSON jsonObject = JSONSerializer.toJSON(loginRole, jsonConfig);
        loginRole = (Role)JSONSerializer.toJava(jsonObject, jsonConfig);

分享到:
评论

相关推荐

    超实用的jQuery代码段

    2.27 如何使用属性过滤器 2.28 如何测试某个元素是否可见 第3章 jQuery操作HTML事件 3.1 禁止或启用输入框 3.2 实时监听输入框字符的变化 3.3 实时监听输入框值的变化 3.4 绑定鼠标右键单击事件 3.5 双击不选中文本...

    Grails 中文参考手册

    5.3.4 立即加载和延迟加载 5.3.4 悲观锁和乐观锁 5.4 GORM查询 5.4.1 动态查找器 5.4.2 条件查询 5.4.3 Hibernate查询语言 5.5 高级GORM特性 5.5.1 事件和自动实现时间戳 5.5.2 自定义ORM映射 5.5.2.1 表名和列名 ...

    angular-generic-table:Angular 2+的通用表。 通用表对表使用标准标记,即table,tr和td元素等,并支持扩展行,全局搜索,过滤器,排序,分页,导出为CSV,列单击,自定义列呈现,自定义导出值

    从服务器延迟加载数据 使用自定义组件扩展行 使用自定义功能对数据进行排序,导出和呈现 使用json对象配置表(添加列等) 切换列可见性 导出为CSV 安装及使用 运行npm install @angular-generic-table/core --save ...

    KODExplorer 芒果云-资源管理器

    - 选中文件时,移动到屏幕可视区域(解决上下左右选中文件滚动条不一致问题) ###ver2.51 `2014/6/22` ---- ####fix bug:(bug解决和程序优化) - 登陆多次密码输入错误验证码bug解决 - 修复漏洞:创建副本加入...

    paramquery-7.1.0.zip

    延迟加载,聚集等的树状网格 在网格,树网格,数据透视网格和自定义组件之间拖放新 正文和标题单元格上的上下文菜单新 带有拖放工具的枢轴网格面板GUI 打字稿支持 动画制作 多列排序 自动和固定行高的无限行和列 ...

    frontend-test

    前端测试语境我们需要按照类似以下屏幕截图的设计来构建一个简单的网页,该网页具有。 ![]要求它应该从JSON API加载图片URL列表。 请使用下面的JSON文件作为示例... 具有“延迟加载”功能。笔记: 在回购中找到设计。

    Pokemon-Card-Viewer:离子应用程序,用于查看口袋妖怪卡

    将视图页面设置为延迟加载图像并使用占位符直到加载在每组中包含针对不同稀有性的过滤器 卡视图页面显示卡信息,定价信息以及加​​载相关卡的选项 广告 用于横幅广告和非页内广告。 标语广告显示在所有非标签页上...

    作品集:使用CodeSandbox创建

    个人博客 个人博客入门者。 观看操作入门»有关更多信息,请访问» 描述 易于使用且易于自定义的... 使用AsyncComponent延迟加载组件(社交共享,信息框) ESLint(谷歌配置) 更漂亮的代码样式 自定义Webpack C

    博客

    个人博客 个人博客入门者。 观看操作入门»有关更多信息,请访问» 描述 易于使用,易于自定义的... 使用AsyncComponent延迟加载组件(社交共享,信息框) ESLint(谷歌配置) 更漂亮的代码样式 自定义Webpack Co

    videoShareApp:使用我自己设计的restful API 的视频数据共享应用程序

    支持延迟加载,每个页面最多以表格形式显示6项,表格头有四个标签,分别是id、标题、描述和logo图片; 应用分页 应用引导程序来风格化网页布局; 具有搜索功能,允许用户按视频标题过滤视频; 允许用户按标题对...

    Java面试宝典2020修订版V1.0.1.doc

    17、Hibernate是如何延迟加载的? 93 18、如果优化Hibernate? 93 19、什么是ORM? 94 20、Hibernate的主键生成策略? 94 21、Hibernate的级联操作 94 22、Hibernate有哪5个核心接口? 95 23、什么是重量级?什么是...

    ExtAspNet_v2.3.2_dll

    -修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...

    iWebShop开源商城系统

    优化控制器加载方式,解决classes扩展类与控制器重名导致异常错误 修复了多个不同规格的货品在同一个订单下无法评论的问题 修复了购物车中优惠金额在小于1元情况下的小数点溢出的问题 修复后台分类批量移动无法选择...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...

    jquery插件使用方法大全

    jQuery 1.5(2011年1月31日):该版本修复了83个bug,解决了460个问题。重大改进有:重写了Ajax模块;新增延缓对像(Deferred Objects);jQuery替身——jQuery.sub();增强了遍历相邻节点的性能;jQuery开发团队构建...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

Global site tag (gtag.js) - Google Analytics