zoukankan      html  css  js  c++  java
  • Hibernate类没有找到序列化器解决方案

    Hibernate类没有找到序列化器解决方案

    异常信息类似如下

    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.alibaba.fastjson.JSONObject["data"]-
    >cn.zytao.taosir.auth.entity.Role_$$_jvst21b_0["handler"])

    有道翻译如下

    没有为org.hibernate.proxy.pojo.javassist类找到序列化器。没有发现创建
    BeanSerializer的属性(为了避免异常,请禁用
    SerializationFeature.FAIL_ON_EMPTY_BEANS)(通过引用
    链:com.alibaba.fastjson.JSONObject["data"]->cn. 
    zytao.taosir.au.entity.role_ $$_jvst21b_0["handler"])

    总之,没有为org.hibernate.proxy.pojo.javassist类找到序列化器。

    原因:

    hibernate会给被管理的pojo加入一个hibernateLazyInitializer属性,

    然而我们在转json的时候,这个属性是不允许反射的,所以抛出了异常

    我们可以去配置文件中添加一个配置

    properties

    spring.jackson.serialization.fail-on-empty-beans=false

    yml/yaml

    spring:
      jackson:
        serialization:
          fail-on-empty-beans: false

    这样就可以转换了

    但是,hibernateLazyInitializer handler 两个也被作为参数转换成json

    我们可以在实体类的声明上添加注解来解决,例如

    @JsonIgnoreProperties(value={"hibernateLazyInitializer","handler"})  
    public class Role implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        /**
         * 角色代码
         */
        @Id
        private String roleCode;
    }

    @JsonIgnoreProperties可以使得在转换的时候忽略掉这些属性

  • 相关阅读:
    找一个写心的地方!
    找一个写心的地方!
    CentOS 6.4最小安装
    poj 3013 Big Christmas Tree 最短路 dijkstra算法
    poj 2449 Remmarguts' Date 第K短路
    CCNUOJ 1010 The Almost Lucky Numbers
    Java容器学习心得Set容器
    CCNUOJ 1027 教你前缀
    我的第一个C++程序( C++语言程序设计项目任务书 )
    CCNUOJ 1031 数组操作(树状数组)
  • 原文地址:https://www.cnblogs.com/it-taosir/p/10129144.html
Copyright © 2011-2022 走看看