`

延迟加载问题,用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);

分享到:
评论

相关推荐

    使用json数据自动生成嵌套table

    7. **性能优化**:处理大量数据时,考虑分页或延迟加载技术,以避免一次性加载所有数据导致页面响应变慢。 在`jsontonestedtable-master`这个项目中,可能包含了实现上述步骤的示例代码,包括解析JSON、构建表格...

    最好的json格式化工具

    3. **性能**:处理大数据时,工具需要有足够的性能来快速加载和格式化JSON文件,避免卡顿或延迟。 4. **可定制性**:用户可能希望调整显示设置,如缩进空格数、颜色主题等,以适应个人喜好。 5. **安全**:如果是...

    最好用的json查看编辑工具

    8. **性能优化**:对于大型JSON文件,工具需要有良好的性能,能够快速加载和响应用户操作,避免卡顿或延迟。 9. **导出与导入**:工具可能支持将编辑后的JSON数据导出为文件,或者导入已有的JSON文件进行编辑。 ...

    extjs tree 异步加载树型

    这种方式避免了一次性加载大量数据导致的性能问题,特别是当树型结构非常深或者包含大量节点时。 在 ExtJS Tree 中实现异步加载,主要涉及以下几个关键点: 1. **TreeStore**:存储树节点数据的模型,可以配置 `...

    rds-json-nginx-module-master.zip_nginx_nginx 解析json_rds_rds_json

    RDS(Redis Data Structure)JSON模块是为了解决这个问题而设计的,它能够将接收到的JSON字符串转化为Nginx可以理解的数据结构,进而直接在Nginx内部进行操作。这种模块化的设计使得Nginx无需依赖其他服务器或语言...

    JSTree(js写的树形菜单,支持加载10000节点以上)

    1. **延迟加载**:对于大型数据集,启用延迟加载功能,只在节点被首次请求时加载其子节点。 2. **分页**:如果数据源支持,可以实现分页加载,减少一次性加载的节点数量。 3. **缓存策略**:合理设置缓存策略,...

    将富文本转为微信小程序richtext组件支持的json格式

    然而,出于安全和性能的考虑,微信小程序并不直接支持HTML标签,而是使用了一种特殊的JSON格式来表示富文本。...通过使用合适的工具和策略,可以有效解决这个问题,为用户提供良好的富文本阅读体验。

    easyui datagrid 大数据加载效率慢,优化解决方法(推荐)

    本文主要探讨如何针对EasyUI datagrid进行性能优化,以解决大数据量加载慢的问题。 首先,我们需要理解问题的根源。当datagrid加载大量数据时,如果未进行优化,其内部的某些功能,如行高自动调整,可能导致性能...

    使用getJSON()异步请求服务器返回json格式数据的实现

    7. **网络延迟和错误处理**:在异步请求中,网络延迟或请求失败是常见的问题。开发者应当合理处理这些异常情况,例如通过设置超时,重试机制等。 总结而言,使用getJSON()方法进行异步请求并处理JSON数据是一种高效...

    superhero_app:使用 Superhero API 获取有关超级英雄的数据的 Web 应用程序。 可以过滤和搜索数据。 该应用程序包括延迟加载并且完全响应

    通过这个目录,开发者可以查看和理解项目的具体实现,包括如何与Superhero API交互,如何使用React组件,以及如何实现延迟加载和响应式设计。 综上所述,"superhero_app" 是一个利用ReactJS、Material-UI和...

    动态加载bootstrap表格数据

    8. **性能优化**:为了提高用户体验,可以考虑使用虚拟滚动或延迟加载(lazy loading),只有当用户滚动到表格底部时才加载更多数据。 9. **响应式设计**:Bootstrap表格具有内置的响应式设计,确保在不同设备上都...

    EXTJS过滤树

    在实际应用中,可能还需要考虑性能优化,比如延迟加载(lazy loading)以减少初始加载的数据量,以及分页等策略来处理大数据集。此外,还可以扩展过滤功能,比如支持多字段过滤、正则表达式过滤等,以提高用户体验。...

    实用的jQuery列表和表格过滤搜索插件

    - 考虑到性能,对于大型数据集,可以考虑使用分页或虚拟滚动技术,减少一次性加载的数据量。 - 在实际使用中,注意对搜索结果的边界条件处理,避免出现空结果时的异常情况。 - 为提高用户体验,可以添加清除搜索...

    AJAX开发中常见的三种问题

    在发送和接收数据时,需注意数据格式的正确转换,例如使用`JSON.stringify()`序列化JavaScript对象,用`JSON.parse()`解析JSON字符串。 5. **缓存问题**: AJAX请求默认情况下可能会被浏览器缓存,导致获取到旧的...

    jQuery 分类搜索框带过滤器的搜索框-20130723

    6. **AJAX请求**:如果搜索数据是通过服务器获取的,那么可以使用jQuery的`$.ajax()`或`$.getJSON()`方法异步加载数据,实现动态加载和实时搜索。 7. **插件化开发**:为了提高代码复用性和维护性,可以将这个搜索...

    struts2和ExtJs整合实例

    - 延迟加载和分页:只加载必要的数据,减少网络传输量。 - 使用压缩和合并:对CSS和JavaScript文件进行压缩和合并,减少HTTP请求次数。 通过以上知识点的整合,我们可以创建一个既有强大后端处理能力,又有丰富...

    动态制作gridview

    - **延迟加载**:如果数据量非常大,可以考虑使用懒加载技术,只有当用户滚动到页面底部时才加载更多数据。 - **缓存**:对于不经常变动的数据,可以考虑在客户端缓存,减少不必要的服务器请求。 通过以上步骤,...

    lovcombo-已解决Bug版-带操作详解

    可能的Bug包括:选项加载延迟、多选后值不正确保存、无法正确显示选中状态等。修复这些问题通常需要对代码进行调试,找到问题根源并调整lovcombo的配置或JavaScript代码。 5. **操作详解**:在使用lovcombo时,了解...

    dataTable.zip

    10. **文档和社区支持**: DataTables有详尽的官方文档和活跃的开发者社区,遇到问题时,可以通过查阅文档或在线寻求帮助来解决问题。 总的来说,"dataTable.zip" 提供了一个集成了Bootstrap样式的自定义DataTable...

    webfxloadtree 树

    2. **性能优化**:对于大型数据集,可能需要优化加载策略,如分页加载、延迟加载等。 3. **安全考虑**:在处理用户提交的数据时,需防止XSS攻击,对输入进行适当的验证和过滤。 总的来说,webFXloadTree是一个强大...

Global site tag (gtag.js) - Google Analytics