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
  • 相关阅读:
    tp框架实现ajax
    tp框架的增删改查
    tp框架获取常量信息、方法、命名空间
    tp框架,访问方式、空方法
    tp基础,文件存储路径
    缓存
    CMS系统存储路径
    Smarty模版引擎的原理
    php的empty(),trim(),strlen()方法
    PHP 流程管理
  • 原文地址:https://www.cnblogs.com/guokefa/p/12452651.html
Copyright © 2011-2022 走看看