前言

最近开发项目比较忙,Spring Cloud的笔记得稍稍放放了,下午出来个bug,恶心的不行,功能很简单,也没有什么级联或复杂的映射关系,就是一直在报三个异常

Caused by: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.shunneng.core.web.rest.util.Result["data"]->com.shunneng.flup.web.rest.dto.SaveFlupDTO["flupForm"]->com.shunneng.flup.domain.FlupForm_$$_jvst158_3["handler"])
2018-05-14 16:54:44,571 ERROR XNIO-2 task-3 c.s.c.w.r.e.ExceptionTranslator:159 - JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain:
org.hibernate.lazyinitializationexception could not initialize proxy - no session

这些异常是最后的这个异常导致的,网上找了很多,都说是jpa或hibernate的延迟加载搞的鬼,解决方法无非就是几种,分别贴出与各位分享之

正文

五个解决方案

1、关闭LazyInitialization, 将fetch设成eager,可以在配置文件,也可注解

2、在spring boot的配置文件application.properties添加spring.jpa.open-in-view=true,yml同理

3、用spring 的OpenSessionInViewFilter

4、在spring boot的配置文件application.properties添加spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true

上述几种,因为用的是springboot项目,只能用注解比较方便,都没有成功,就不详写了。介绍下面的方法,我是在一个国外网站找到的

5、在出问题的实体类上加@Proxy(lazy = false) 这里copy下机翻,英语好的可以直接移步文章出处

有情况,当我们想要一个简单的解决方案时,并不关心性能方面的任何事情,例如为了测试或原型设计的目的。在这种情况下,您可以在应用程序中进行以下配置更改以避免此错误,但请记住,如果此代码进入生产环境,则预先初始化可能导致的影响。

如果您使用XML配置:将default-lazy =“false”添加到您的 元件

如果您使用注释配置:将@Proxy(lazy = false)添加到所有实体类。

这就是如何修复线程“main”中的异常org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话。我们已经看到,这个错误主要出现在关闭连接并尝试访问未完全初始化的代理对象时。由于代理对象需要连接,因此可以将对象重新连接到会话,或者小心避免编写代码,这些代码访问未初始化的代理对象。

避免LazyInitializationException的另一种方法是通过使用lazy =“false”来禁用实体类的hibernate的懒惰初始化功能或者使用default-lazy =“false”完全禁用它。

由于性能原因,此解决方案不推荐用于生产用途,但可用于原型设计,测试和演示。当你从Hibernate 2.1升级到3.0时,如果你第一次看到这个错误,不要感到惊讶,因为这是Hibernate默认启用延迟初始化时的版本。如果您在任何其他场景中遇到此错误或尝试解决“org.hibernate.LazyInitializationException:无法初始化代理 - 无会话”,您也可以在此处发布错误和代码,我们可以一起看看。

引用文章:Dealing with org.hibernate.LazyInitializationException: could not initialize proxy - no Session in Hibernate Java

2018-05-29 最新更新,有时候还有种出现这种问题的可能是,findOne方法等写成了getOne等……

本文仅作记录,写文帮助更多人,转载还望注明出处http://www.cnblogs.com/hellxz/p/9037597.html

【bug记录】jpa 解决org.hibernate.lazyinitializationexception could not initialize proxy - no session的更多相关文章

  1. jpa 解决org.hibernate.lazyinitializationexception could not initialize proxy - no session

    org.hibernate.LazyInitializationException: could not initialize proxy [org.alan.entity.SysUser#1] - ...

  2. 解决org.hibernate.LazyInitializationException: could not initialize proxy - no Session懒载入问题

    问题描写叙述: Struts Problem Report Struts has detected an unhandled exception: Messages: could not initia ...

  3. dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决

    dubbo序列化,hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决 转载声明: ...

  4. 总结懒加载的解决方法(全)org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    如下错误:org.hibernate.LazyInitializationException: could not initialize proxy - no Session 原因是懒加载的问题,因为 ...

  5. J2EE进阶(九)org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    org.hibernate.LazyInitializationException: could not initialize proxy - no Session 前言 在<many-to-o ...

  6. Hibernate和Spring整合出现懒加载异常:org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    出现问题:  SSH整合项目里,项目目录结构如下: 在EmployeeAction.java的list()方法里将employees的list放入到request的Map中. EmployeeActi ...

  7. Exception 07 : org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    异常名称: org.hibernate.LazyInitializationException: could not initialize proxy - no Session 异常截图: 异常详情: ...

  8. 解决方案,org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    org.hibernate.LazyInitializationException: could not initialize proxy - no Session org.hibernate.pro ...

  9. 多表关联懒加载导致的org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    本来考虑的是懒加载,这样可以提高效率,不过由于时间紧急 把懒加载改为急加载临时解决 https://www.jianshu.com/p/89520964f458 自己管理session也可以 临时补丁 ...

随机推荐

  1. .NET资源文件实现多语言切换

    1.创建对应的资源文件 lang.en.resx  英文 lang.resx   中文,默认 lang.zh-tw.resx  繁体 首先说明,这三个文件前面部分名称需要一样,只是 点 后面的语言代号 ...

  2. 从输入url到显示网页发生了什么

    原文链接:https://juejin.im/post/5bf23afa6fb9a049be5d1494 在浏览器中输入url到显示网页主要包含两个部分: 网络通信和页面渲染 互联网内各网络设备间的通 ...

  3. bat批量重命名文件

    @echo off setlocal enabledelayedexpansion set prefix="mai" set /a num=000 rem 排序/o:? -代表逆序 ...

  4. C变参数函数demo

    #include <stdio.h> #include <stdarg.h> int sum(int a,...) {     int temp = 0,sum=0,count ...

  5. 打开jsp页面时,显示空白页。

    打开jsp页面时,显示空白页.   #foreach($e in $listPlanItem)          #set($listPlanDetail=$!e.get(2))        < ...

  6. 2018.08.28 洛谷P4556 [Vani有约会]雨天的尾巴(树上差分+线段树合并)

    传送门 要求维护每个点上出现次数最多的颜色. 对于每次修改,我们用树上差分的思想,然后线段树合并统计答案就行了. 注意颜色很大需要离散化. 代码: #include<bits/stdc++.h& ...

  7. asp.net 中长尾链接实现推送 -- comet

    一般需求推送服务时,都会去第三方拿推送组件,如”极光“,”百度“,”小米"什么的,自己用.net实现推送服务端需要面对很多问题,比如C10K,但是企业内部使用往往用不了10K的链接,有个1K ...

  8. JedisPoolConfig解说

    版本一 今天发现Jedis 默认的连接方式 jedis=new Jedis(“localhost”,6379),老是发生connection timeout. 后来发现jedis类包还有一种可以设置最 ...

  9. EXCEL 单元格引用问题

    =(SUM(INDIRECT("'2.5酒店预订收入'!"&"J"&MATCH(C21,'2.5酒店预订收入'!B:B,0)&" ...

  10. ansible facts 获取硬件信息

    facts 指的是 ansible_facts 变量,ansible 中使用 setup 模块来获取,包含系统的大部分基础硬件信息, [root@10_1_162_39 host_vars]# ll ...