在hibernate一对多映射中,两个实体都重写了toString()方法,应用程序递归太深了,所以发生了堆栈溢出。
StackOverflowError是由于当前线程的栈满了
java.lang.StackOverflowError
at java.util.HashMap$HashIterator.<init>(HashMap.java:778)
at java.util.HashMap$KeyIterator.<init>(HashMap.java:826)
at java.util.HashMap$KeyIterator.<init>(HashMap.java:826)
at java.util.HashMap.newKeyIterator(HashMap.java:840)
at java.util.HashMap$KeySet.iterator(HashMap.java:874)
at java.util.HashSet.iterator(HashSet.java:153)
at java.util.AbstractCollection.toString(AbstractCollection.java:414)
at org.hibernate.collection.PersistentSet.toString(PersistentSet.java:333)
解决方法: 将多的一方对象里面重写的toString方法去掉,或者两个对象里面重写的toString方法都去掉
另一个问题是将一方的inserse设置为true,只有一方维护关系,否则会造成重复更新。