zoukankan      html  css  js  c++  java
  • 解决springboot jpa Could not write JSON: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer

    出现问题 

    {
        "timestamp": 1583769258574,
        "status": 500,
        "error": "Internal Server Error",
        "exception": "org.springframework.http.converter.HttpMessageNotWritableException",
        "message": "Could not write JSON: 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); nested exception is 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: springboot.learn.entities.User_$$_jvst863_0["handler"])",
        "path": "/user/1",
        "company": "mg",
        "ext": null
    }

    解决问题 

    原因

    因为jsonplugin用的是Java的内审机制.hibernate会给被管理的pojo加入一个hibernateLazyInitializer属性,jsonplugin会把hibernateLazyInitializer也拿出来操作,并读取里面一个不能被反射操作的属性就产生了这个异常.

    package springboot.learn.entities;
    
    
    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    
    import javax.persistence.*;
    
    //使用JPA 注解配置映射关系
    @Entity//告诉JPA这是一个实体类 (和数据表映射的类)
    @Table(name = "tpl_user")
    @JsonIgnoreProperties({"hibernateLazyInitializer","handler"})// 忽略json配置
    public class User {

     application.properties的配置

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://39.105.167.131:3306/smile_boot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
        username: root
        password: Nrblwbb7$
    
      jpa:
        properties:
          hibernate:
            hbm2ddl:
              auto: update #数据库表的migration
            dialect: org.hibernate.dialect.MySQL5InnoDBDialect #规定数据库未innodb型
            format_sql: true
        show-sql: true#在控制台打印sql
  • 相关阅读:
    记一次bash脚本报错原因
    说说JSON和JSONP,也许你会豁然开朗,含jQuery用例(转载)
    python 正则空格xa0实录 与xpath取 div 里面的含多个标签的所有文字
    python3的时间日期处理
    easyui的 一些经验
    hash是什么?
    vue.js 入门
    python __nonzero__方法
    Jmeter之『并发』
    Docker之网络篇
  • 原文地址:https://www.cnblogs.com/guokefa/p/12452651.html
Copyright © 2011-2022 走看看