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可以使得在转换的时候忽略掉这些属性

原文地址:https://www.cnblogs.com/it-taosir/p/10129144.html

时间: 2024-07-30 15:33:09

Hibernate类没有找到序列化器解决方案的相关文章

模型类序列化器

模型类序列化器 DRF提供了模型类序列化器: ModelSerializer 作用: 简化对应django模型类的序列化器的定义 ModelSerializer与常规的Serializer相同,但提供了: 基于模型类自动生成一系列字段 基于模型类自动为 Serializer 生成 validators,比如字段唯一的校验器 包含默认的 create() 和 update() 的实现 1. 定义 比如我们创建一个 DepartmentSerializer2 class DepartmentSeri

Cf序列化器-Serializer解析

Cf序列化器-Serializer 定义序列化器 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer. 例如,我们已有了一个数据库模型类BookInfo class BookInfo(models.Model): btitle = models.CharField(max_length=20, verbose_name='名称') bpub_date = models.DateFiel

DjangoRestful 递归嵌套序列化器实现

**** 由于博客园不支持markdown语法,所以推荐以下链接阅读: 原创 https://blog.csdn.net/weixin_42495873/article/details/89433542 # Django嵌套递归序列化器实现 **最近在做自己的项目,需要返回评论表相关数据,我的评论表设计的是这样的,父id为空则是等级最高的父评论,然后依次为子.孙子...评论信息关联,类似于省市级三级联动,不过这个评论表的深度可以更深** ![我的评论表](https://img-blog.csd

JavaScriptSerializer中日期序列化问题解决方案

JavaScriptSerializer中日期序列化问题解决方案 直接进入主题: class Student { public int age { get; set; } public DateTime? date { get; set; } public string name { get; set; } } 当点击的时候: private void button1_Click(object sender, EventArgs e) { System.Web.Script.Serializat

NetworkComms V3 使用Json序列化器进行网络通信

刚才在网上闲逛,偶然看到一篇文章 C#(服务器)与Java(客户端)通过Socket传递对象 网址是:http://www.cnblogs.com/iyangyuan/archive/2012/12/23/2829712.html#3140522 其中提到了 C#与java如通过传递对象通信的问题 摘引如下: 通信关键: C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象. 对于Socket技术,发送数据之前,一般将字符串

实体类为啥要序列化

我的理解:就像我们搬桌子,桌子太大了不能通过比较小的门,所以我们要把它拆了再运进去,这个拆桌子的过程就是序列化. 而反序列化就是等我们需要用桌子的时候再把它窦起来,这个过程就是反序列化. 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本.图片.音频.视频等, 而这些数据都会以二进制序列的形式在网络上传送. 那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的.如何做到呢?这就需要Java序列化与反序列化了. 换句话说,一方面,发送方需要把这个Java

【C/C++学院】0825-类模板/final_override/类模板与普通类的派生类模板虚函数抽象模板类/类模板友元/位运算算法以及类声明/Rtti 实时类型检测/高级new创建/类以及函数包装器

类模板 类模板多个类型默认类型简单数组模板 #pragma once template <class T=int>//类模板可以有一个默认的值 class myArray { public: myArray(); ~myArray(); }; #include "myArray.h" template <class T=int>//每一个函数都需要加上一个默认的值 myArray<T>::myArray() //类模板成员函数在外部,需要加载类型初始

NetworkComms c#通信框架之使用BinaryFormatter序列化器进行网络通信

NetworkComms是一款来自英国的C#语言编写的通信框架 NetworkComms通信框架默认使用的是protobuf.net序列化器 NetworkComms 通信框架还内置了 BinaryFormaterSerializer 序列化器,此序列化器是对.net框架自带的  BinaryFormatter 的封装使用. 在networkcomms v2版本中的BinaryFormaterSerializer代码如下: #if WINDOWS_PHONE #else using System

IOSerialize,xml和json,soap序列化器,二进制序列化器,XML序列化器,文件 检查、新增、复制、移动、删除

1 文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/读取配置文件3 三种序列化器4 xml和json1.文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/读取配置文件 using System.IO; /// <summary> /// 配置绝对路径 /// </summary> private static string LogPath = ConfigurationManager.AppSettings["LogPath&