Caused by: java.lang.*Error: null 的解决办法
程序员文章站
2022-07-15 14:37:57
...
问题概述:
关于这个问题呢,是在项目开发的过程中不知道哪根筋抽搐了一下迷迷糊糊范的一个低级错误,幸好发现的及时,不然后果严重呀。。。
注:所有数据表通过集成JPA的方式,将实体映射到关系型数据库中的。
异常信息如下:
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (*Error); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (*Error)
Caused by: java.lang.*Error: null
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_40]
at java.lang.ClassLoader.defineClass(ClassLoader.java:760) ~[na:1.8.0_40]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_40]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[na:1.8.0_40]
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_40]
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_40]
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_40]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_40]
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_40]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_40]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_40]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_40]
部分截图如下:
解决办法:
这个问题的发现,还要感谢测试组的工作人员,在测试的时候在每个数据表中都添加了大量的数据,才有让我及时的马上的发现了这个问题。
在接口写完后,测试时,就发现 *Error ,然后一调试就发现了问题,遇到一个多对多的关系,就引出了递归调用+死循环 ,所以在查询的时候一定要注意这个问题,当表的字段和数据量较小时,很难发现。
在其它各层的数据操作中都没有问题,就是在类型转换的时候就出现了问题。
要避免这个问题很简单,只需要不是用原来的映射实体,重新构建一个实体专门作为该数据的承载体,需要什么字段在映射的实体中提取,然后封装到该数据的载体中就可以了。
好了,关于Caused by: java.lang.*Error: null 的解决办法 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。
推荐阅读
-
无法确定条件表达式的类型,因为“
”和“System.DateTime”之间没有隐式转换----解决办法 -
Mybatis:使用bean传值,当传入值为Null时,提示“无效的列类型”的解决办法
-
Caused by: java.lang.*Error: null 的解决办法
-
SpringCloud FeignClient 传输对象,discover接受对象为null的解决办法
-
iOS中json解析出现的null,nil,NSNumber的解决办法
-
php 语法里0不等于null为空的解决办法
-
window.opener引用为null的解决办法
-
json_encode 函数中文被编码成 null的解决办法
-
无法确定条件表达式的类型,因为“
”和“System.DateTime”之间没有隐式转换----解决办法 -
json_encode 函数中文被编码成 null的解决办法