Hibernate实体定义的时候对类Photo和OtherPhoto设置了一对多和多对一的关联,Photo里有OtherPhoto集合。OtherPhoto里有Photo对象。这样在得到Photo的list或set后返回Json到视图,出现了Json的属性循环,导致报错java.lang.StackOverflowError错误
解决方法:如不需要OtherPhoto中的photo属性,只需要在字段前面加 transient修饰符就行了。
同理,复写Photo和OtherPhoto的toString()方法是容易循环打印,也会报错。
原因就是你把两个对象的toString方法都重写之后,应用程序递归太深了,所以发生了堆栈溢出。解决方法就是将多的一方对象里面重写的toString方法去掉,或者两个对象里面重写的toString方法都去掉。就ok了。