jpa配置多对多关系后 实体类无法使用toString()方法 出现StackOverflowError

出现的问题:
在这里插入图片描述

问题出现的原因:

  • 无法直接打印实体对象user,即调用实体类的toString()方法出现异常,因为toString()都打印了对方,会导致死循环,最终栈溢出。

    解决的方法是:

  • 重写toString方法,将toString()方法除去打印对方的语句

新问题:
在这里插入图片描述
问题出现的原因:

  • spring mvc 将对象转换为Jason字符串时,调用的并不是toString()方法,而是通过反射获取属性然后转换为字符串
  • 在将对象解析为 json格式字符串时,由于user对象中有role对象,role对象中也有user对象,解析时会形成死循环

解决的方法是:
  打破死循环,将其中一个类的字段使用@JsonIgnore给忽略,@JsonIgnore的作用是spring mvc将对象转换为json格式字符串时忽略该属性,防止出现两个对象相互调用出现死循环。建议忽略放弃了维护权的实体类属性,即role。
   这样查找用户时也能同时返回,该用户拥有的角色。

参考链接:
https://www.cnblogs.com/ymqj520/p/11378280.html

https://blog.csdn.net/weixin_43871371/article/details/106355072

猜你喜欢

转载自blog.csdn.net/HC199854/article/details/110928704