jackson 反序列化 jpa实体报错

笨笨的阿星 发布于 06/29 21:02
浏览 163
收藏 0

【直播预告】计算中心件Linkis开源技巧的应用和实际!>>>

实体

异常信息

异常代码地位

redis设备

在网上找了好久没有处理办法

加载中
0
Kit_lee
Kit_lee

检查一下是否是双向援用惹起的成绩,即父POJO类援用发子POJO类,子POJO类里边又援用了父POJO类。没应用@JsonIgnore

Kit_lee
Kit_lee
答复 @笨笨的阿星 : 我估计是如许,序列化在redis中的对象,个中permissions属性实际上是hirbernate的一个代理类,其实不是java.util.Set。所以在反序列化时才会找hibernate干活。我推荐你尝尝@JsonTypeInfo指定一下序列化时目标类看看
笨笨的阿星
我感到是pojo查询出来的时辰,把数据序列化保存的redis,以后查询就封闭了,等从redis获得到数据停止反序列化,由因而jpa实体接洽关系字段会去查询数据库,然则连接曾经封闭所以报的这个缺点。在反序列化的时辰若何不停止查询操作
0
f
freezingsky

lazy的时辰 ,序列化时,触发lazy的加载 ,然则session 封闭了,所以,掉败了。 
普通JPA的实体,不要直接往外扔。假设你非要,请翻开openInView,不过,建议不要!

0
SpringBoot中文社区
SpringBoot中文社区

你这个缘由应当是,jpa检索出来的对象是一个懒加载的“代理对象”,jackson在序列化的时辰,调用了getter办法,代理对象发明getter为null,因而就会去数据库检索接洽关系记录。然则履行情况不在事务外面。以后哨程没有绑定SESSION,招致了这个异常。

你可以推敲把这个几行代码,封装到一个事务办法外面去履行。

前往顶部
顶部