当前位置: 首页 > 知识库问答 >
问题:

无法延迟初始化集合,无法初始化用于将JSON转换为实体的代理

黄德明
2023-03-14

我有一个与hibernate和spring框架一起使用的java项目。我应该将我的实体转换为 json 并将实体保存到数据库,然后读取 json 并将其转换为我的实体。此外,我的主要实体有一些懒惰加载的实体。我使用以下代码将我的实体转换为 json,我在下面的链接中使用了该代码。

避免对未提取的惰性对象进行杰克逊序列化

            String arg = "";
            ObjectMapper mapper = new ObjectMapper();
            Hibernate4Module module = new Hibernate4Module();
            mapper.registerModule(module);
            mapper.enableDefaultTyping();

            try {
                arg = mapper.writeValueAsString(arguments);
            } catch (IOException e) {
                logger.error("Uncaught exception in thread: " + ExceptionUtils.getStringFromExceptionStackTrace(e));
            }

但是,从json读取到Entity可能不起作用。

            ObjectMapper mapper = new ObjectMapper();
            Hibernate4Module module = new Hibernate4Module();
            mapper.registerModule(module);
            module.disable(Hibernate4Module.Feature.FORCE_LAZY_LOADING);
            module.enable(Hibernate4Module.Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS);
            mapper.enableDefaultTyping();
            return mapper.readValue(jsonObject,Object[].class);

我得到了以下异常:

com.fasterxml.jackson.databind.JsonMappingException:无法延迟初始化集合,无法初始化代理 - no Session (通过引用链:Object[][0]-

共有1个答案

阙弘博
2023-03-14

在<code>合同中添加<code>@JsonIgnore</code>。financialAgreementList</code>属性,以便可以禁用JSON序列化和反序列化。

 类似资料:
  • 我有一个应用程序,我正在扩展它以提供REST API。在主站点中一切正常,但当我尝试访问REST API时,我在异常日志中得到以下内容: 禁用延迟加载将解决此问题,但会导致不可接受的性能(加载时间从 200 毫秒到 22 秒)。我不知道如何处理这个问题。 我刚开始在ColdFusion中Rest,在我看来,CFC正在以一种不寻常的方式被处理。它们似乎没有被初始化(init方法似乎没有运行),现在看

  • 我正在使用JPA(Hibernate 4 . 3 . 3作为持久性提供者)和Spring (3.2.2),我所有的字段都加载得很好,但是当我试图访问我的集合时,它抛出了错误- 当我调试这个时,我的实体类中定义的每个集合都有错误- 我尝试使用collection.size()和Hibernate.initialize(),但都不起作用。在Internet上搜索时,我发现扩展Persitence将解决

  • 我正在制作一个网站,我试图在其中订购配料。我选择配料并输入其数量,然后单击添加。我重复了几次。然后我进入下一页,在其中我选择了一个供应商。然后我按“订单”。 预计将Nabavka插入数据库并打开一个页面,说明订单成功,但我收到一个异常,告诉我不能懒惰地初始化它。 来自NabavkaController。java: Nabavka.java: 纳米尔尼卡。java: 纳巴夫卡科帕。java: 纳巴夫

  • 我不明白为什么会发生这种情况。根据代码路径,当引发此异常时,我应该在同一线程中并且会话应存在。 有人能告诉我我错过了什么吗? 我有设置 在hibernate.cfg.xml档案里 我在Servlet过滤器中创建了以下代码 在index.xhtml文件中,我有以下调用: 做一些事情 index.xhtml正在使用使用ui include加载menu.xhtml文件的模板。然后,菜单文件会插入menu

  • 问题内容: 我使用休眠来创建一个REST API。我创建了一种获取表中所有项目的方法。 这是我的Language.java 这是我的Patient.java 重要提示:Bean和映射是通过NetBeans从MySQL数据库反向工程的。调用时,不需要获取任何与之相关的数据。我的表格只有2列,而。表的前键为 在rest api中使用此方法之前,它没有任何异常即可完美运行。但是,当我在rest api中

  • 问题内容: 我有下一个错误: 我的实体: 我有一个服务班: 我从另一种服务方法调用服务: 但是,当我试图调用这个方法我收到线异常,当我打电话时,也会发生同样的异常上。我已经检查了事务管理器,并且配置正确,并且此步骤中存在事务。另外,我已经检查了关于与此异常相关的stackoverflow的大量答案,但没什么用。 可能是什么原因造成的? 问题答案: 看来模型是一个独立的实体。 尝试合并并在合并实例上