解决springboot jpa Could not write JSON: No serializer found for class org.hibernate.proxy.pojo.javass
Posted 做人如水,做事如山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决springboot jpa Could not write JSON: No serializer found for class org.hibernate.proxy.pojo.javass相关的知识,希望对你有一定的参考价值。
出现问题
{
"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
以上是关于解决springboot jpa Could not write JSON: No serializer found for class org.hibernate.proxy.pojo.javass的主要内容,如果未能解决你的问题,请参考以下文章
bug记录jpa 解决org.hibernate.lazyinitializationexception could not initialize proxy - no session
SpringBoot 使用JPA时解决no session的方法
SpringBoot2 JPA No Identifier specified for entity的解决办法
log4j:WARN No appenders could be found for logger ().解决方案
SpringBoot JPA懒加载异常 - com.fasterxml.jackson.databind.JsonMappingException: could not initialize pr
Springboot使用@Autowired注入Mapper接口编译错误“Could not autowire. No beans of ‘UserMapper‘ type found.“